我试图在一个控制器中定义一个全局模型,然后尝试在某些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");
但是我需要全局定义它。我有什么办法吗?
答案 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
}
}
}