UI5设置/获取全局模型

2020-08-24 10:51发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我已经阅读了几篇有关使用Global模型的文章,并且似乎有许多方法可以做到这一点,无论是对还是错。 我现在避免在清单中定义我的模型,而是选择直接在component.js中定义它。 我正在使用的代码如下:

在component.js的onInit中:

//var oModel1 = new sap.ui.model.json.JSONModel(" model/Testmodel.json");
 var oData = {测试:{名称:"世界"}};
 var oModel1 = new sap.ui.model.json.JSONModel(oData);
 sap.ui.getCore()。setModel(oModel1," oModelTest");
 

在View Controller.js中,我在onInit函数中包含以下代码:

 var oModel = sap.ui.getCore()。getModel(" oModelTest"); 

但是,在调试中进行监视时,oModel显示为未定义。 它不会出错。 我还尝试使用变量oModel1,因为有人提到名称在set/get的两端应该相同。 但是可惜是同样的问题。

有人提到理想情况下,我们不应使用核心来设置/获取全局模型。 我很高兴看到如何使它工作,并且在可能的情况下不使用内核。

如果任何人都可以使用,我将不胜感激一些演示代码。

最诚挚的问候

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我已经阅读了几篇有关使用Global模型的文章,并且似乎有许多方法可以做到这一点,无论是对还是错。 我现在避免在清单中定义我的模型,而是选择直接在component.js中定义它。 我正在使用的代码如下:

在component.js的onInit中:

//var oModel1 = new sap.ui.model.json.JSONModel(" model/Testmodel.json");
 var oData = {测试:{名称:"世界"}};
 var oModel1 = new sap.ui.model.json.JSONModel(oData);
 sap.ui.getCore()。setModel(oModel1," oModelTest");
 

在View Controller.js中,我在onInit函数中包含以下代码:

 var oModel = sap.ui.getCore()。getModel(" oModelTest"); 

但是,在调试中进行监视时,oModel显示为未定义。 它不会出错。 我还尝试使用变量oModel1,因为有人提到名称在set/get的两端应该相同。 但是可惜是同样的问题。

有人提到理想情况下,我们不应使用核心来设置/获取全局模型。 我很高兴看到如何使它工作,并且在可能的情况下不使用内核。

如果任何人都可以使用,我将不胜感激一些演示代码。

最诚挚的问候

付费偷看设置
发送
7条回答
Haoba3210
1楼 · 2020-08-24 11:43.采纳回答

使用this.getView()。setModel(ModelName," ModelName")

SC_Yao
2楼-- · 2020-08-24 11:39

您可以在 plunkr.co 吗?

 var oModel1 = new sap.ui.model.json.JSONModel(" Testmodel.json";//结束括号



 

要从视图获取模型数据,请使用this.getView()。getModel(" MODELNAME")[具有相同的view->控制器]

外部或其他控制器->使用this.getView()。byId(" ID")。getModel(" ModelName")

歪着头看世界
3楼-- · 2020-08-24 11:33

请不要使用" sap.ui.getCore ().getModel()"。 而是在清单中定义模型。 您可以使用" this.getOwnerComponent()。getModel()"从每个视图的控制器清单中访问所有模型

在每个控制器中,您还可以使用" this.getView"创建其他模型 ().setModel()"和" this.getView()。getModel()"。

希望有帮助。

亲切的问候,

Wouter

落灬小鱼
4楼-- · 2020-08-24 11:34

在这种情况下,如何从浏览器控制台访问模型以进行调试? " this"是指浏览器窗口。

nice_wp
5楼-- · 2020-08-24 11:54

我设法找到了可行的解决方案,但是老实说,我对使用该内核并不满意。 这是我的工作。

在component.js中

//测试模型

//测试模型
 var oData = {测试:{名称:"世界"}};
 var oModel1 = new sap.ui.model.json.JSONModel(oData);
 sap.ui.getCore()。setModel(oModel1," oModelTest");
 sap.ui.core.UIComponent.prototype.init.apply(this);
//在控制台中显示
 console.log(sap.ui.getCore()。getModel(" oModelTest")));
 

在我的控制器中,我有:

 var oModel1 = sap.ui.getCore()。getModel(" oModelTest")。getProperty("/img/Test"); 

现在可以使用,但是如上所述,我想避免使用内核。

有人吗?

槿木_熙
6楼-- · 2020-08-24 11:32

尝试

 this.getOwnerComponent()。getModel(" oModelTest")
空代码
7楼-- · 2020-08-24 11:29

您的代码 看起来还可以 但是通常我们不使用core ....

在component.js中。 this.setModel,此存储的模型将可用于所有视图。

一周热门 更多>