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()这样的承诺?我是否需要考虑一些事情,例如,可能不从先前绑定到视图的对象读取数据?

也许你可以附加到更改事件?

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

最新更新