在XML视图中,我有一个JSON模型绑定到名为'foo'的页面。模型的对象有一个'name'字段和子集合'bar'(有一个'code'字段),我希望在列表中显示。这是建模的:
JS代码
var foo = { name:'My Name', bar:[{ code:'Code 1' }, { code:'Code 2' }] }
var fooModel = new sap.ui.model.JSONModel(foo);
page.setModel(fooModel, 'foo');
page.bindElement('foo>/');
XML标记
<Label text='{foo>name}'/>
<List items='{foo>bar}'>
<StandardListItem title='{foo>code}'/>
</List>
请注意,子项'bar'数组的列表项的值通过名称'foo'解析。至少这对我有用,我没有找到其他方法在列表中引用它们。
但问题是如何在列表项中获取顶级'foo'对象数据呢?说我想在列表项中显示“名称”字段? 换句话说,有没有办法做相同的以下,我可以用不同的名称引用子集合?有没有办法实现这个目标?
<List items="{ path:'foo>bar', name='bar' }">
<StandardListItem title='{bar>code}' info='{foo>name}' />
</List>
答案 0 :(得分:0)
您需要使用绝对路径来绑定name
属性。绝对意味着模型中属性的完整路径。相反的是相对绑定路径。在这里,您只需在模型中的某个位置使用属性,并设置绑定上下文以告知运行时您的属性在模型中的位置。您可以使用以下方法执行此操作:
page.bindElement("foo>/");
现在,运行时将此信息应用于此页面中针对模型foo
的所有相对绑定。因此,您可以编写foo>bar
,运行时会自动查找foo>/bar
。但是在项目聚合中,这不起作用,因为bar
对象没有属性name
。因此,您需要使用绝对绑定路径来绑定属性。
<List items="{foo>bar}">
<StandardListItem title='{foo>code}' info='{foo>/name}' />
</List>
您可以在documenation中找到JSONModel的绑定语法的说明。