为什么我的过滤器在odata模型中不起作用

时间:2017-07-11 01:46:38

标签: odata sapui5

我正在使用odata模型来读取数据。但它不起作用。检查下面的代码。

   getGuid: function(pernr){
        var self = this;
        var url = "/PersonalDetailSet?$filter=Pernr eq '00000001'";
        self.setBusy(true);
        this.oModel.read(url, {
            success: function(res){
                self.setBusy(false);
                self.guid = res.results[0].Guid;
            },
            error: function() {
                self.setBusy(false);
            }
        });
    }

我不知道为什么网址中的过滤器现在无法正常工作?

3 个答案:

答案 0 :(得分:1)

myODataModel.read("/PersonalDetailSet"/*no queries here!*/, {
  filters:[
    new Filter({ // required from "sap/ui/model/Filter"
      path: "myField",
      operator: FilterOperator.EQ, // required from "sap/ui/model/FilterOperator"
      value1: "..."
    })
  ],
  // ...
});

答案 1 :(得分:0)

如果要在读取功能中应用其他URL参数,则必须通过“urlParameters”参数执行此操作:

getGuid: function(pernr){
    var self = this;
    var url = "/PersonalDetailSet";
    self.setBusy(true);
    this.oModel.read(url, {
        urlParameters: {
            "$filter" : "Pernr eq '00000001'"
        },
        success: function(res){
            self.setBusy(false);
            self.guid = res.results[0].Guid;
        },
        error: function() {
            self.setBusy(false);
        }
    });
}

答案 2 :(得分:0)

首先,检查您是否在范围内获得模型。我可以看到 this.oModel ,这不是获取模型的正确方法。最好使用 this.getModel() this.getView()。getModel(),然后检查调用。传递过滤器不是正确的方法,但它仍然可以工作。