我在UI5应用程序的Component.js中声明了一个模型,如下所示init: function() { sap.ui.core.UIComponent.prototype.init.apply(this); var oModel1 = new sap.ui.model.json.JSONModel("model/mock.json"); sap.ui.getCore().setModel(oModel1, "oModelForSales");},但onInit除非在视图上设置模型,否则无法通过控制器内部的任何方法访问模型:var oModel1 = new sap.ui.model.json.JSONModel("model/routes.json");this.getView().setModel(oModel1);sap.ui.getCore().getModel("oModelForSales")控制器onInit中的日志将模型显示为,undefined但我能够在onBeforeRendering处理程序中获取它。为什么在Component.js中设置的核心模型无法在中访问onInit?
2 回答
手掌心
TA贡献1942条经验 获得超3个赞
您可以一次尝试此代码-
init:function(){
//sap.ui.core.UIComponent.prototype.init.apply(this);
var oModel1 = new sap.ui.model.json.JSONModel("model/mock.json");
sap.ui.getCore().setModel(oModel1,"oModelForSales");
console.log(sap.ui.getCore().getModel("oModelForSales"));
sap.ui.core.UIComponent.prototype.init.apply(this);
},
然后在任何控制器的init方法中尝试-
console.log(sap.ui.getCore().getModel("oModelForSales"));
我认为sap.ui.core.UIComponent.prototype.init.apply(this);->调用create content方法,并且甚至在定义模型之前就初始化了视图和控制器,因此未定义为模型。使用我的方法,我们首先创建模型,然后在Component中调用super init方法。
注意@ Admins->我没有足够的评论要点,因此添加了答案。
添加回答
举报
0/150
提交
取消