从循环中的ODataModel读取数据以计算总和

时间:2017-01-10 13:27:36

标签: odata sapui5

我需要从循环中的ODataModel读取数据来计算值。所以oData.Read()对我不利,因为它会调用Asynchronously并调用另一种方法。我想像Array中的循环一样循环,可能oDataModel.getProperty()可以帮助我。我正在Chrome Console中执行以下代码并获得低于结果。

m1 = this.getView().getModel("Model Name");

m1.getProperty("/")

结果是:  Object {SEARCH('61451144935589051'): Object, SEARCH('61451144935589052'): Object, SEARCH('61451144935589053'): Object, SEARCH('61451144935589054'): Object, SEARCH('61451144935589055'): Object…}

但是,如果我尝试使用下面的代码,那么将undefined作为输出。

m1.getProperty("/SEARCH")

1 个答案:

答案 0 :(得分:1)

获得undefined是完全正确的。显然,您有一个具有单个键的实体类型SEARCH,并且您的模型存储了此实体类型的多个实体。

您可以获取存储在模型中的所有数据并按照附加的代码示例进行处理。但是,当您向客户端提供很多逻辑时,这个强烈不推荐。更好的方法是在OData服务中使用函数甚至是额外的实体。

var data, i, name, names, sum;

data = m1.getProperty("/");
names = Object.getOwnPropertyNames(data);
sum = 0;
for (i = 0; i < names.length; i += 1) {
    name = names[i];
    // you have to check for the correct entity
    if (/SEARCH/.test(name )) {
        sum += data[name].value;
    }
}