2014-12-04 2 views
0

때때로 나는에 컨트롤 속성을 바인딩 할 요구 사항이 구문은 다음과 같이 볼 수 있었다 (하지만 작동하지 않습니다) 예를 들어 다른 모델 B.SAPUI5 컨트롤 속성을 바인딩 외부의 데이터로 바인딩하는 방법은 무엇입니까?

에 모델 A의 출력 데이터를 기반으로 :

text : "{B>/rootB/{A>someValue}/propertyB}" 

일반적으로이 함수는 형식 함수와 함께 사용되지 않는 컨트롤 속성을 "잘못 사용"하여이 문제를 해결합니다.

tooltip : { 
    path : "A>someValue", 
    formatter : function(oValue) { 
     // do some checks on oValue 
     var path = "B>/rootB/"+oValue+"/propertyB"; 
     this.bindProperty("text", path); 
    return undefined; // because tooltip is not used 
    } 

"A> someValue"가 변경 될 때마다 "텍스트"의 바인딩이 자동으로 업데이트됩니다. 템플릿 코드에서이를 수행 할 수도 있습니다 (예 : 항목 집계).

그러나 코드를 냄새가있다)

어떤 제안이 청소기 만들려면?

답변

1

내가 아는 한, UI5에는 아직 가능성이 없습니다 (아직). 이미 언급 한 것처럼 나는 항상 포매터 함수를 사용합니다. 개발자가이 기능 요청을 알고있는 것 같기 때문에 나는 말할 수 없습니다. see on GitHub

하지만 임의의 컨트롤 속성을 사용하지 않아도됩니다. 또한

text : { 
 
    path : "A>someValue1", 
 
    formatter : function(oValue) { 
 
     // read model B to get someValue2 (based on someValue1) 
 
     var path = "B>/rootB/"+oValue+"/propertyB"; 
 
     
 
     var B = getModel("someModel"); 
 
     var someValue2 = B.getProperty(path); 
 
     
 
     return someValue2 
 
    }

+0

좋은 생각하지만, (필요한 경우) 작동하지 않습니다 바인딩 양방향 이상 : 그냥 액세스 권한이있는 모든 모델에서 필요한 값을 읽을 수있는 포맷을 사용할 수 있습니까? – user3783327

+0

포맷터를 사용할 때는 양방향 바인딩이 지원되지 않습니다. 이러한 경우 컨트롤 값을 변경할 때 change 이벤트를 사용하여 데이터 모델을 업데이트합니다. – phigem

관련 문제