2017-11-07 1 views
0

요소 바인딩 조각SAPUI5는 : 바인딩은 데이터

var oModel = oView.getModel(); 
var oPromiseMetadataLoaded = oModel.metadataLoaded(); 
oPromiseMetadataLoaded.then(function() { 
    var sObjectPath = oModel.createKey("Project", { 
     ProjectID: sProjectId 
    }); 
    oView.bindElement("/" + sObjectPath); 
    // <HERE> 
}); 

이있는 경우 지금은 바인드 된 오브젝트의 데이터를 사용합니다 (이 어디로 가야 '//'로 표시) 기능을 실행하고자하는 코드를 실행합니다. 데이터가 아직없는 경우 (모델이 분명히 OData 모델 임) dataReceived 이벤트에 연결해야하지만 데이터가 이미있을 때는이 이벤트가 실행되지 않습니다.

두 경우 모두 코드를 실행하는 데있어 가장 (UI5) 관용적 인 방법은 무엇입니까? oModel.metadataLoaded()과 같은 약속이 있습니까? 나는 무엇인가를 고려해야 하는가? 이전에 뷰에 바인딩 된 객체의 데이터를 읽지 않을 가능성이 있습니까?

답변

0

아마도 change-Event에 연결할 수 있습니까?

oView.bindElement({ 
     path: "/" + sObjectPath, 
     events : { 
      change: this._onBindingChange.bind(this), 
      dataRequested: function (oEvent) { 
       oView.setBusy(true); 
      }, 
      dataReceived: function (oEvent) { 
       oView.setBusy(false); 
      } 
     } 
}); 

_onBindingChange : function (oEvent) { 
    if (this.getView().getBindingContext()) { 
     //HERE 
    } 
    else { //Invalid Binding Context }; 
} 
관련 문제