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

How to apply global model in XML View?

我试图在我的一个控制器中定义一个全局模型,然后尝试在某些 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");

但我需要全局定义它。有什么办法可以做到吗?

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

从任何控制器访问模型

示例:

在 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
            }
        }
    }