2017-01-10 3 views
-1

값을 계산하려면 루프에서 ODataModel의 데이터를 읽어야합니다. 그래서 은 Asynchronously을 호출하고 다른 방법을 호출하기 때문에 나에게 좋지 않습니다. Array에서 루핑하는 것처럼 반복하고 싶습니다. 아마 oDataModel.getProperty()이 도움이 될 수 있습니다. 아래 코드에서 Chrome Console 코드를 실행 중입니다.루프에서 ODataModel의 데이터를 읽어서 합계를 계산하십시오.

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

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; 
    } 
} 
+0

감사합니다. 어떻게 그리드 테이블의 열 수준을 합계 할 수 있는지 더 좋은 생각이 있습니까? 그리고 다른 추천 방법은 나에게 명확하지 않습니다. 샘플 코드를 제공해 주시겠습니까? –

+0

방금 ​​http://stackoverflow.com/questions/41500043/column-level-sum-aggregation-in-sapui5-gridtable을 찾았습니다. 어쨌든 적은 정보로 같은 질문을하는 것이 이치에 맞지 않습니다! – matbtt

관련 문제