SAPUI5:将模型从一个控制器传递到另一个控制器

时间:2016-06-09 06:50:25

标签: model-view-controller sapui5

我正在尝试使用详细信息视图创建一个splitapp,其中的地图已根据主视图中的选择进行了更新。目前我正在尝试在选择列表项时执行的函数中设置模型。我在主控制器中使用sap.ui.getCore().setModel(oModel, "ModelName");设置所需的模型。在详细信息控制器中,我尝试使用sap.ui.getCore().getModel("ModelName").getData();访问模型。但是,sap.ui.getCore().getModel("ModelName")将以未定义的形式出现。

2 个答案:

答案 0 :(得分:1)

建议构建基于Component的UI5应用程序。如果这样做,可以在组件的init函数中进行模型初始化:

init: function() {
    // call the init function of the parent
    UIComponent.prototype.init.apply(this, arguments);
    // set data model
    var oData = {
        prop: test
    };
    var oModel = new JSONModel(oData);
    this.setModel(oModel);
}

如果您使用的是manifest.json,那么在那里定义您的模型要好得多;这个模型将通过整个应用程序提供;包括视图和控制器,如i18n或类似创建的设备模型。

在UI5演练页面上

Setting up the component.jsApplication descriptors

答案 1 :(得分:0)

如果您想拥有全局模型,我建议您使用Component作为主要持有者。

您可以在每个控制器中执行

this.getOwnerComponent().setModel(oModel, sModelName);

然后用

检索它
this.getOwnerComponent().getModel(sModelName);

视图和控制器具有自己的模型可见性,因此它是本地的。