我在控制器onBeforeRendering: function()
中调用sap.ui.getCore().byId()
,当我第一次加载页面(Tab(时,它按预期工作。现在我正在切换页面以更改另一个函数的值之一,isPD()
返回 True OR false,更改值后,我已经验证了控制台并且isPD()
看起来不错。现在,一旦我切换回页面,sap.ui.getCore().byId()
返回未定义。(如果满足函数isPD()
条件,这应该返回 undefined,这是第一次工作,但一旦我更改了 isPD()
中的值就不起作用了。
var oRB2 = new sap.ui.commons.RadioButton("CPCONF_APPROVE", {
text: '{i18n>acw.common.approveAndAssignTo}',
tooltip: '{i18n>acw.common.assignReqTo}',
groupName: '{18n>acw.ui.cp.Confirmation.group1}',
select: oController.approveSelected
});
vLayout.addContent(oRB2);
if (isPD()) { // check if PD
approve = getPDDropDown("APPROVE");
approve.setEnabled(false);
approve.attachChange(oController.handleChange);
vLayout.addContent(approve);
}
vLayout.addContent(new sap.ui.core.HTML({
content: "<span> </span>"
}));
onBeforeRendering: function() {
var app = sap.ui.getCore().byId("APPROVE");
if (isPD()) { // check if PD
if (app !== undefined)
sap.ui.getCore().byId("APPROVE").setEnabled(true);
} else {
if (app !== undefined)
app.setVisible(false);
if (sap.ui.getCore().byId("CPCONF_APPROVE") !== undefined)
sap.ui.getCore().byId("CPCONF_APPROVE").setText(getI18n("acw.common.approve"));
我尝试将isPD()
放在变量声明之前,isPD 会调整正确的值,但sap.ui.getCore().byId()
返回未定义的值。 sap.ui.getCore().byId("APPROVE")
应该在函数isPD()
上返回"值"和"未定义"的降级。它正在第一次加载,但在更改 isPD()
中的值后,它不起作用。
在组件或清单中,创建一个 JSON 模型 ( sap/ui/model/json/JSONModel
( 并设置它。在清单中,它就在那里,在组件中,您需要手动创建它。假设您称它为 app
.
在清单中:
"models": {
"app": {
"type": "sap.ui.model.json.JSONModel"
}
}
在任何控制器中,this.getOwnerComponent().getModel('app')
都应该获取模型。
model.getProperty
和model.setProperty
应该在任何控制器中获取模型内任何内容的当前值。此外,您可以将内容绑定到它,例如设置中的单选按钮键CPCONF_APPROVE