【问题标题】:SAPUI5: No options to create dynamic filters in XML views?SAPUI5:没有在 XML 视图中创建动态过滤器的选项?
【发布时间】:2014-12-09 06:40:11
【问题描述】:

我正在将 OData 模型绑定到列表项,并尝试在 XML 视图中使用以下语法动态应用过滤器:

<List
    id="supplierList"
    items="{
        path : '/SupplierCollection',
        filters : {
            path : 'CompCode',
            operator : 'EQ',
            value1: {
                path : 'general>/companyCode'
            }
        }
    }"

这里使用的“通用”模型已经在 Component.js 中定义,并且在视图的控制器中也有引用:

onInit : function() {
    ...
    var generalModel = sap.ui.getCore().getModel("general");
    this.getView().setModel(generalModel, "general");
    ...
}

不幸的是,模型似乎没有被解析,并且路径在运行时没有被正确解释。但如果我对 value1 进行硬编码,那么过滤器就会正常工作。

对这个问题有什么想法吗?

是我使用错误的路径来设置过滤器的 value1 吗?还是bug?

【问题讨论】:

标签: xml view binding filter sapui5


【解决方案1】:

显然艾伦的答案是长期的正确方法,但同时我在我的控制器中使用了以下工作:

onInit: function() {
    this._oView = this.getView();

    // ... any other init stuff ...

    this._oView.attachAfterRendering(function() {
        var sValue1 = "filter val";

        var sPath = "fieldName";
        var sOperator = "EQ";

        var oBinding = this.byId("catalogTable").getBinding("items");
        oBinding.filter([new sap.ui.model.Filter(sPath, sOperator, sValue1)]);
    });
}

只调用了一次服务(它不会加载数据然后重新加载,我担心它可能会这样)。

【讨论】:

    【解决方案2】:

    列表绑定不支持将动态过滤器值定义为绑定路径。有关详细信息,请查看我对此question 的回答。另请参阅here 上报告的 git 问题。

    【讨论】:

    • 遗憾的是,该实现被拒绝了,因为它会在非平凡的应用程序中引起问题,因为会出现需要使用 ManagedObjects。不过,我对该主题的了解还不够深入,无法评价这个决定。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    • 1970-01-01
    相关资源
    最近更新 更多