为了账号安全,请及时绑定邮箱和手机立即绑定

无法使用全局模型

无法使用全局模型

暮色呼如 2019-10-12 13:43:34
我在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->我没有足够的评论要点,因此添加了答案。


查看完整回答
反对 回复 2019-10-12
  • 2 回答
  • 0 关注
  • 439 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信