通过聚合绑定项目的ID

时间:2020-08-12 10:57:59

标签: sapui5

我有一个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的绑定不起作用。似乎是相同的问题,不是吗?

1 个答案:

答案 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")
    }
  );
}
相关问题