有时显示 sapui5 组件设置,有时未定义(相同代码)
sapui5 component settings shown sometimes, sometimes undefined (same code)
我想将同一个 SAPUI5 组件用于不同的用途。
我想通过设置来区分用途,如图
var oComponentContainer = new sap.ui.core.ComponentContainer( {
url : "resources/components/clientSelector",
name : "components.clientSelector",
id : "components.clientSelector",
propagateModel : true,
settings : {
bPopupView : true,
iOffset : $(document).height() - 300
}
});
有时当我console.log我的component.oContainer时,它完全按照预期显示,有时它根本不显示任何东西,它显示undefined
。
这可能与我的 javascript 异步有关吗?
我找到了问题和答案。 SAPUI5 在创建容器之前创建并实例化组件。根据创建组件的速度(包括视图和控制器初始化),此代码可能在设置设置时已经完成。
我也找到了解决这个问题的方法:我现在使用的是 componentData 属性,而不是设置,它非常有效:
var oComponent = sap.ui.getCore().createComponent( {
url: "resources/components/clientSelector",
name: "components.clientSelector",
id: "components.clientSelector",
componentData: {
test: "xx"
}
});
var oComponentContainer = new sap.ui.core.ComponentContainer( {
component: oComponent
});
我可以从第一个视图的初始化访问 oComponent.getComponentData(),并返回我的测试数据。
我想将同一个 SAPUI5 组件用于不同的用途。
我想通过设置来区分用途,如图
var oComponentContainer = new sap.ui.core.ComponentContainer( {
url : "resources/components/clientSelector",
name : "components.clientSelector",
id : "components.clientSelector",
propagateModel : true,
settings : {
bPopupView : true,
iOffset : $(document).height() - 300
}
});
有时当我console.log我的component.oContainer时,它完全按照预期显示,有时它根本不显示任何东西,它显示undefined
。
这可能与我的 javascript 异步有关吗?
我找到了问题和答案。 SAPUI5 在创建容器之前创建并实例化组件。根据创建组件的速度(包括视图和控制器初始化),此代码可能在设置设置时已经完成。
我也找到了解决这个问题的方法:我现在使用的是 componentData 属性,而不是设置,它非常有效:
var oComponent = sap.ui.getCore().createComponent( {
url: "resources/components/clientSelector",
name: "components.clientSelector",
id: "components.clientSelector",
componentData: {
test: "xx"
}
});
var oComponentContainer = new sap.ui.core.ComponentContainer( {
component: oComponent
});
我可以从第一个视图的初始化访问 oComponent.getComponentData(),并返回我的测试数据。