SAPUI5 - 如何使两个模型保持同步

时间:2015-12-01 12:24:22

标签: sapui5

我是SAPUI5的新手,我想知道如何保持两个模型同步。我使用sap.ui.getCore()。setModel()和sap.ui.getCore()。getModel(),在两个控制器之间以及控制器和它的视图之间传递数据。现在,如果我在一个控制器中更改模型数据,如何在第二个控制器或视图中更新。

以下是示例代码结构。

我有一个customControl

sap.ui.core.Control.extend("CustomControl", {      // call the new Control type "my.Hello" 
                                          // and let it inherit from sap.ui.core.Control
metadata : {                              // the Control API
    properties : {
        ....
        "dataProvider": {type : "any", defaultValue: new sap.ui.model.json.JSONModel()},
        ....
    },},
render:function() {
//I am using dataProvider as a model for the Table which is inside this CustomControl

}}

在视图中我将CustomControl用作此

 var oCustomCotrol = new CustomControl("XYZ",{....dataProvider: this.getModel("ModelData"),....});

在Controller中我正在设置ModelData

onInit: function() {
        console.log("Init update Market");
        var responseData = new sap.ui.model.json.JSONModel();
        // Ajax call to fetch the data assign it to reponseData,
        sap.ui.getCore().setModel(responseData,"ModelData")
},

正在更改数据,但CustomControl中的表未更新

1 个答案:

答案 0 :(得分:0)

通常,您只需创建一个或多个模型,并将它们设置在核心或组件上(后者用于基于组件的应用程序)。之后,模型在完整的应用程序/组件中可见。因此,无需手动同步多个模型,因为您可以在任何地方看到一个或多个模型。当在一个控制器中更改模型时,变化随处可见,因为模型在任何地方都可见。那就是它。

我认为你应该从阅读一些SAPUI5教程开始。这是两个好的:

  1. Walkthrough Tutorial
  2. Data Binding Tutorial
  3. 演练对任何人来说都是一个良好的开端。数据绑定教程将重点关注数据绑定,即您将了解有关模型等的更多信息。

    也许这会给你一些如何做的提示:

    
    
    OrthographicCamera camera = new OrthographicCamera(64,32);