Sapui5 如何从另一个视图更改视图的模型数据?
viewtest绑定到JSONModel。通过创建对viewtest的引用并将模型设置为viewtest.getModel,View2被绑定到同一JSONModel 我试图通过单击按钮修改View3中的共享模型数据,以便textfield和textview中的文本将自动更改。但是,textfield和textview中的文本保持不变,这是一个文本。有什么问题吗 index.html文件: 以及viewtest.view.js文件:Sapui5 如何从另一个视图更改视图的模型数据?,sapui5,Sapui5,viewtest绑定到JSONModel。通过创建对viewtest的引用并将模型设置为viewtest.getModel,View2被绑定到同一JSONModel 我试图通过单击按钮修改View3中的共享模型数据,以便textfield和textview中的文本将自动更改。但是,textfield和textview中的文本保持不变,这是一个文本。有什么问题吗 index.html文件: 以及viewtest.view.js文件: sap.ui.getCore().setModel(new s
sap.ui.getCore().setModel(new sap.ui.model.json.JSONModel());
sap.ui.JSViewTest.viewtest{
getControllerName:函数{
返回viewtest.viewtest;
},
createContent:functionoController{
this.setModelnew sap.ui.model.json.JSONModel;
变量oData={
文本:这是一个文本
};
this.getModel.setDataoData;
var oTextField=new sap.ui.commons.TextField{value:{/text};
返回[oTextField];
}
}; 只是一个建议。也许值得为每个视图提供.html文件id,然后在view3中通过id调用每个视图来更新和设置模型? 喜欢 在index.html中:
var view1 = new sap.ui.view({id:"view1", viewName:"viewtest.View1", type:sap.ui.core.mvc.ViewType.JS});
然后在视图3中:
function func() {
var oView = sap.ui.getCore().byId("view1");
oView.getModel().setData({text:"hello world"}, true);
oView.getModel().refresh(); //if setting new model won't update the views
}
或者,如果在所有视图中使用相同的模型,请不要将模型分别设置为每个视图,而是设置为核心视图:
viewtest.view.js文件:
sap.ui.getCore().setModel(new sap.ui.model.json.JSONModel());
因此,不需要在view2中设置模型 view2和view3正在获取viewtest的新实例。它们都需要共享同一个viewtest实例。