Sapui5 如何从另一个视图更改视图的模型数据?

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

viewtest绑定到JSONModel。通过创建对viewtest的引用并将模型设置为viewtest.getModel,View2被绑定到同一JSONModel

我试图通过单击按钮修改View3中的共享模型数据,以便textfield和textview中的文本将自动更改。但是,textfield和textview中的文本保持不变,这是一个文本。有什么问题吗

index.html文件:

以及viewtest.view.js文件:

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实例。