如何在XML视图中应用全局模型?

时间:2019-04-17 11:00:18

标签: xml sapui5

我试图在一个控制器中定义一个全局模型,然后尝试在某些XML视图中获取其值,但是我不知道为什么它不显示。

控制器:

sap.ui.getCore().setModel(oModelo, "miModelo");

查看:

<Text id="selectiona"
  class="selectiona"
  text="{= ${miModelo>/miSelectiona}.length > 0 ? 'Selected:' + ${miModelo>/miSelectiona} : ''}"
/>

P.S:当我这样设置模型时有效:

this.byId("selectiona").setModel(oModelo,"miModelo");

但是我需要全局定义它。我有什么办法吗?

2 个答案:

答案 0 :(得分:1)

this answer中所述,在Core上设置的模型不会传播到ComponentContainer的子级。因此,请改为在Component上设置模型。您可以在 manifest.json 中声明性地执行此操作,也可以在 Component.js 中调用this.setModel(...)。然后,模型将自动传播到其子级,这意味着视图将能够显示模型数据,而无需任何控制器的参与。如果需要,您仍然可以通过调用this.getOwnerComponent().getModel(...)从任何控制器访问模型。

示例:

答案 1 :(得分:0)

在manifest.json中声明它。这是一个示例:

"models": {
        "i18n": {
            "type": "sap.ui.model.resource.ResourceModel",
            "settings": {
                "bundleName": "atendimentoMobile.i18n.i18n"
            }
        },
        "viewModel": {
            "type": "sap.ui.model.json.JSONModel",
            "dataSource": "viewModelDs",
            "settings": {
                "defaultBindingMode": "TwoWay"
            }
        },
        "deviceModel": {
            "type": "sap.ui.model.json.JSONModel",
            "dataSource": "deviceDs",
            "settings": {
                "defaultBindingMode": "OneWay"
            }
        },
        "authModel": {
            "dataSource": "authServiceDs",
            "settings": {
                "defaultBindingMode": "TwoWay",
                "useBatch": false
            }
        },
        "chamadosModelOdata": {
            "dataSource": "mainServiceDs",
            "settings": {
                "defaultBindingMode": "TwoWay",
                "useBatch": false
            }
        }
    }