XML视图中如何为列表参数绑定动态值/模型属性并动态设置length?
SAPUI5 列表items参数动态绑定length的问题解答
问题背景
在XML视图中,需为列表的items参数绑定动态值或模型属性。已知可通过传入startIndex和length参数限制列表显示条目数,示例代码如下:
<List items = "{path: 'model>/Invoices', length: 3, startIndex: 0}">
现咨询两个问题:
- 能否将
length值绑定为模型属性(如length:'model>/property')? - 是否支持将JavaScript变量传入XML视图?
问题解答
1. 可以将length绑定为模型属性
直接使用UI5的绑定语法即可,只需给length的值加上大括号包裹,和path的绑定方式一致。示例代码:
<List items="{ path: 'model>/Invoices', length: '{model>/displayCount}' }">
这种写法会让UI5自动监听model>/displayCount这个属性的变化,实时更新列表显示的条目数量。同理,startIndex也支持同样的绑定方式。
2. XML视图不支持直接引用JS变量,但有替代方案
XML视图本身无法直接读取JavaScript变量,但可以通过以下两种方式实现类似需求:
- 将JS变量赋值给模型属性(推荐):在控制器中把变量值存入视图模型,再在XML中绑定该属性。示例控制器代码:
// 假设myJsVariable是你要传入的JS变量 this.getView().getModel("model").setProperty("/displayCount", myJsVariable);
之后XML中就可以用上面的绑定写法调用该属性。
- 使用表达式绑定(针对全局变量):如果变量是全局作用域的,可以通过表达式绑定直接引用:
<List items="{ path: 'model>/Invoices', length: '=${window.myGlobalVariable}' }">
注意:局部变量不适合这种方式,建议优先使用模型属性的方案,更符合UI5的MVC架构规范。
内容的提问来源于stack exchange,提问作者coool
相关产品推荐
相关产品推荐

