我可以动态设置ID和视图名称吗?

时间:2016-08-01 09:23:07

标签: javascript sapui5

    <core:mvc.XMLView id="{path:' AssignmentModel>/AssignmentType' ,formatter:'.getViewName'}" 
            viewName="{path:' AssignmentModel>/AssignmentType' ,formatter:'.getViewName'}" 
            height="100%" visible="true"/>

我希望根据assignemnt类型加载视图。 我试图根据类型从控制器动态加载视图。 但它的工作正如预期的那样。

1 个答案:

答案 0 :(得分:0)

如果在XMLView中使用View,它将被创建一次。即使你的绑定工作也是OneTime,这意味着它只能解决一次,这显然不是你想要的。

您必须使用Routing作为已提及的资质,或者从控制器动态加载内容并手动将其插入视图层次结构中。您仍然可以使用PropertyBinding来观察属性更改,如下所示:

 var binding = new sap.ui.model.PropertyBinding("AssignmentModel", "/AssignmentType");
 binding.attachChange(function() {
   var sViewName = this.getViewName(this.getModel("AssignmentModel").getProperty("/AssignmentType");
   var oView = sap.ui.xmlview({
     id: sViewName
     viewName: sViewName
   });
   // pack your view whereever you want, clean the old view before
   this.getView().addContent(oView);
 }, this)

您可能需要使用sap.ui.model.odata.ODataPropertyBinding,具体取决于您使用的型号。

上面的代码未经测试,但它“应该”有效。

GL 克里斯