因此,我需要在应用程序的component.js中进行odata调用,并且基于响应,我必须在控制器的onInit上执行某些代码。但是,当我检查网络调用时,我看到该调用没有完全完成,这就是为什么我在控制台中看到错误的原因,因为它尝试访问该模型,但是自成功处理程序执行以来就没有创建它不被调用。有什么办法吗?
这里是一个例子:
Component.js:
this.promise = $.Deferred()
oDataModel.read("DataSet", {
success: (oData)=>{
this.promise.resolve(oData);
},
error: (oError)=>{
this.promise.reject(oError)
}
});
this.promise.promise();
控制器:
this.getComponent().promise.then((oData)=>{
// your code...
});
Component.js:
onInit: function() {
oDataModel.read("/SET", {
success: function(oData) {
// your code before view creation
// create root view etc
UIComponent.prototype.init.apply(this, arguments);
// get your root view and controller if needed
const oView = this.getRootControl();
const oController = oView.getController();
// instantiate router
this.getRouter().initialize();
},
error: function(oError) {
// error handling
}
});
// code that is not depending on the promise
}
请注意,根视图是在控制器之前创建的。
这里是app startup的文档