Sapui5 通过“添加内容到XMLView”;添加内容“;不';行不通

Sapui5 通过“添加内容到XMLView”;添加内容“;不';行不通,sapui5,Sapui5,我有以下资料: 现在,在我的控制器中,我想动态地向视图中添加一个。 在我的onInit函数中,我将当前视图的对象传递给创建面板并将其添加到视图的方法 onInit:function(){ var sUrl=“/sap/opu/odata/sap/MY_odata_SERVICE/”, oModel=新的ODataModel(sUrl),//v2 oCurrentView=this.getView(); this.getView().setModel(oModel); 此._createPan

我有以下资料:


现在,在我的控制器中,我想动态地向视图中添加一个。 在我的
onInit
函数中,我将当前视图的对象传递给创建面板并将其添加到视图的方法

onInit:function(){
var sUrl=“/sap/opu/odata/sap/MY_odata_SERVICE/”,
oModel=新的ODataModel(sUrl),//v2
oCurrentView=this.getView();
this.getView().setModel(oModel);
此._createPanel(oCurrentView);
这是。_createChartContainer();
这个;
这个;
},
_createPanel:函数(currentView){
var sId=此。_globals.panelId;
var oViewPanel=新面板(sId{
宽度:“自动”
}).addStyleClass(“sapUiSmallMarginBeginEnd”);
这。_globals.panelState=oViewPanel;
currentView.addContent(oViewPanel);
返回当前视图;
},
但是永远不会渲染面板:

但是当我调用视图的函数时,面板作为一个条目列出


澄清: 在
XMLView
中创建
sap.m.Panel
不是问题。将这一部分XML放入
XMLView
中是可行的


但是,我需要在运行时(在控制器中)创建
sap.m.Panel
对象并将其附加到
XMLView
中,而不是
XMLView

现在,问题是:
使用上面发布的控制器代码,将创建面板对象。事实上,它甚至被注册为
XMLView
的内容聚合,但它并没有被呈现(见上图)


如果您对为什么以及如何发生这种行为提出任何建议,我们将不胜感激。

请尝试将面板放在XML视图中,并为其指定一个visible=“false”属性

使用oPanel实例,您可以执行API中列出的所有方法:

希望这有帮助:-)

致以最诚挚的问候

问题
this.getView().addContent(/*…*/)
不起作用

为什么? 目前,
XMLView
不允许通过API操作其内容,因为:

请注意,由于技术原因,不支持修改此控件的
内容
聚合。这包括调用所有内容修改方法,如
addContent
等,还包括隐式删除内容聚合包含的控件。例如,通过
destroy
方法销毁控件。可以调用所有函数,但可能无法正常工作或导致意外的副作用

在撰写本文时(v1.64),情况仍然如此

注:上述限制仅适用于
XMLView
。其他视图类型,如
JS视图
*,不受影响




*
sap.ui.core.mvc.JSView
sap.ui.JSView
已被弃用。
改用(自v1.90起适用)。

是否需要在运行时创建它?在代码中,所有panels属性似乎都是静态的。您只需将面板添加到xml视图中,将visible标志设置为false,然后将内容添加到面板中,并将visible设置为true……不,我不一定需要在运行时创建面板才能使应用程序正常工作。我只是很惊讶面板在控制器中创建时没有呈现,我想知道为什么没有呈现。嗨,Enum,您是否尝试使用onBeforeRendering代码而不是onInit只是为了检查?
<Panel id="panelId" visible="false">

</Panel>
_createPanel: function(){
  var oPanel = this.getView().byId("panelId");
  oPanel.setVisible(true);
  // Other Methods for Panel
}