有时显示sapui5组件设置,有时未定义(相同代码)

时间:2015-06-05 14:34:49

标签: javascript asynchronous sapui5

我想将相同的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异步有关吗?

1 个答案:

答案 0 :(得分:0)

我发现了问题&回答。在创建容器之前,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(),并返回我的测试数据。