无法使用全局模型

我在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?


暮色呼如
浏览 443回答 2
2回答

手掌心

您可以一次尝试此代码-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->我没有足够的评论要点,因此添加了答案。
打开App,查看更多内容
随时随地看视频慕课网APP