我有一个NavContainer,我想通过聚合绑定使用JSONModel设置页面。最后,NavContainer应该包含一堆具有给定ID的XMLView(以便稍后导航至它们)和viewNames以加载视图。
<NavContainer id="idNavContainer" height="16em" initialPage="{/oInitialStep/sId}" pages="{/aStepPages}">
<mvc:XMLView id="{sId}" viewName="{sViewName}" />
</NavContainer>
这是JSONModel的结构:
{
oInitialStep: {
sId: "idInitialStep",
sViewName: "my.app.views.init"
},
aStepPages: [
{
sId: "idInitialStep",
sViewName: "my.app.views.init"
},
{
sId: "idStep2",
sViewName: "my.app.views.step2"
},
{
sId: "idLastStep",
sViewName: "my.app.views.last"
},
]
}
不幸的是,我收到此错误:
错误:“ __ xmlview1-{sId}”不是有效的ID。
我尝试用一个简单的列表替换NavContainer,并从documentation复制它,并发生了相同的错误。似乎通常无法使用聚合来绑定ID。正确吗,有人知道工作吗?
此外,NavContainer的initialPage的绑定不起作用。似乎是相同的问题,不是吗?
答案 0 :(得分:-1)
我找到了一种方法,可以通过在工厂函数中创建页面来实现,但是我仍然想知道是否可以在XML中使用模板。
在XMLView中:
<NavContainer pages="{ path: '/aStepPages', factory: '.manufactureNavContainerPages'}" />
在控制器中:
manufactureNavContainerPages: function(sId, oContext) {
return new sap.ui.core.mvc.XMLView(
oContext.getProperty("sId"),
{
viewName: oContext.getProperty("sViewName")
}
);
}