【问题标题】:SAPUI5 Access json model from another controllerSAPUI5 从另一个控制器访问 json 模型
【发布时间】:2015-09-10 02:36:05
【问题描述】:

我是 SAPUI5 的新手,我正在做一些关于 Master 和 Detail 页面的练习。

我有 2 个视图,Master.view.xmlDetail.view.xmlMaster.view.xml 包含员工列表。当用户单击员工时,它将导航到详细信息视图。 Detail.view.xml 包含所选员工的详细信息。

每个视图都有其对应的控制器。 我已将我的 json 模型放在 Master.controller.js 中。

如何在不传递数据的情况下从 Master.controller.js 访问 Detail.view.xml 的 json 模型?这甚至可能吗?


@keshet

这是我在母版页中创建的列表:

<List  xmlns="sap.m"
            id="masterList"
                headerText="{i18n>masterHeaderText}"
                footerText="Updated: September 4, 2015"
                items="{/employeeDetails}"
                itemPress="" >
                    <StandardListItem xmlns="sap.m" 
                        id="{empid}"
                        title="{name}"
                        description="{levelDesc}"
                        info="{cubeNo}"
                        type="Navigation"
                        tap="handleListItemPress"  />
            </List>

现在我正在尝试将 StandardListItem 的 ID 更改为来自模型的员工 ID。但是出现一个错误,说我不能使用 empid 作为 StandardListItem 的 id。我该怎么做?

【问题讨论】:

  • 看看这个:link

标签: json xml sapui5


【解决方案1】:

您可以全局声明您的模型,因此所有视图都可以访问它。 定义全局模型:

var oModel = new sap.ui.model.json.JSONModel(oData);
sap.ui.getCore().setModel(oModel);

在另一个视图中从模型中检索数据:

var oData = sap.ui.getCore().getModel().getData();

如果您想使用多个全局模型,也可以为模型命名:

var oModel = new sap.ui.model.json.JSONModel(oData);
sap.ui.getCore().setModel(oModel, "modelname");

var oData = sap.ui.getCore().getModel("modelname").getData();

【讨论】:

  • 感谢您的回复@keshet。我这样做了,但我还不能在详细信息页面上对其进行测试。我仍在努力将所选列表的 ID 从主页面传递到详细信息页面。
【解决方案2】:

您可以通过将模型设置为 master 来做到这一点。现在详细获取视图及其对应的模型。

主控制器-

oModel = 新 sap.ui.model.json.JSONModel(oData); sap.ui.getView().setModel(oModel);

细节或任何你想要的地方:-

oModel = sap.ui.getView().getModel();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多