javascript - 如何刷新事件处理程序内的 ODataModel

标签 javascript sapui5

我正在创建一个 SplitApp。在其中,我通过 MockServer 将 OData 模型设置为默认模型,该模型之前已经过测试并且工作正常。

当前显示的主页在标题上有一个搜索字段。正在调用搜索处理程序,并在其中我在列表的项目绑定(bind)上设置过滤器,但没有调用模拟后端。

对 oList.getBinding('items') 的调用返回未定义。我已检查绑定(bind)存在于列表 mBindingInfos 内,但属性绑定(bind)未定义。但定义了一个模板和一个工厂属性。

如何触发对正确应用过滤器的模拟后端的调用?

我使用的是sapui5版本1.20.7。

这是 View 的片段

<content>
    <List   id="listViagens"
            items="{/ViagemCollection}"
            mode="{device>/listMode}"
            noDataText="Nenhuma viagem encontrada"
            select="onSelect"
            growing="true"
            growingScrollToLoad="true">  
        <items>
            <ObjectListItem
                type="{device>/listItemType}"
                press="onSelect"
                title="{Matricula}">
            </ObjectListItem>
        </items>
    </List>
</content>

这是事件处理程序

onSearch: function() {
    var aFilters = [];
    var sSearchValue = this.getSearchValue();
    var oList = this.getListaViagens();
    var oFilter;

    if (sSearchValue && sSearchValue.length > 0) {
        oFilter = new sap.ui.model.Filter("Matricula", sap.ui.model.FilterOperator.EQ, sSearchValue);
        aFilters.push(oFilter);
    }

    oList.getBinding('items').filter(filters);
},

这是 sap.m.List getBinding 的定义...它返回未定义,因为 this.mBindingInfos[sName].binding 未定义。

function (sName){
    "use strict";
    return this.mBindingInfos[sName] && this.mBindingInfos[sName].binding;
}

任何帮助将不胜感激。

最佳答案

当提供了绑定(bind)信息但未创建实际绑定(bind)时,可能有两个原因:

  1. 绑定(bind)信息不完整或不正确(例如拼写错误)。您可能需要仔细检查一下。
  2. 模型不会传播到控件,因此绑定(bind)信息无法解析为绑定(bind)对象。您可能需要调用 oList.getModel() 来检查模型是否已传播到您的控件。

另一个潜在的错误,介于上述两件事之间的是命名模型的使用(即当您在某处执行 this.setModel(oModel, "myModelName") 时)。在这种情况下,您可以通过例如从控件获取模型oList.getModel("myModelName")。此外,在进行绑定(bind)时,您需要在绑定(bind)路径前添加模型名称作为前缀,例如items="{myModelName>/ViagemCollection}"

最后但并非最不重要的一点是,您应该考虑升级 SAPUI5 运行时。最后发布的版本约为 1.26.x。您使用的版本 (1.20.x) 已有大约一年的历史。

关于javascript - 如何刷新事件处理程序内的 ODataModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28728544/

相关文章:

javascript - 向伪 :before element 添加一个类

javascript - 何时/为何使用 map/reduce over for 循环

javascript - 具有多个 Y 轴的 VizFrame 组合图表

odata - 表动态加载 SAPUI5/UI5

javascript - SAPUI5 - 数据绑定(bind)到现有 XML 表

javascript - 创建一个响应式且可以发布到数据库的自定义弹出窗口

javascript - 如何停止 DOM 特定元素上的冒泡?

尽管返回 false,Javascript 函数仍返回 url 中的哈希值

sapui5 - 从 SmartTable 中删除过滤器选项

javascript - 如何更改 HTML 鼠标输入的背景颜色