元素绑定代码段
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()
这样的承诺?我是否需要考虑一些事情,例如,可能不从先前绑定到视图的对象读取数据?
也许你可以附加到更改事件?
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 };
}