在我的XSOData服务中,我有一个基于带输入参数的计算视图的实体。我可以在XML视图中将这些参数设置为常量,即
<List items="{dicts>/AncParams(p_dict_name='GROUPS',p_rec_id=2)/Results}" >
<StandardListItem
title="{dicts>NAME}"
/>
</List>
它会正常工作。
但我如何动态设置参数p_dict_name
和p_rec_id
?我试图使用表达式绑定来获取另一个模型的参数值(类似这样:<List items="{= ${dicts>/AncParams(p_dict_name='GROUPS',p_rec_id=${DictUIProps>/parentId})/Results} }" >
),但没有运气。据我了解,表达式绑定不起作用。还有其他办法吗?
答案 0 :(得分:1)
据我所知,您无法通过XML动态进行聚合绑定。至少在我使用的版本中没有,我不得不承认我暂时没有重新检查。在将内部绑定应用于模型之前,永远不会解释该字符串。
我这样做的方法是通过控制器:
<List id="myList" />
并在您的控制器中onBeforeRendering
或onPatternMatched
或控制器知道您的模型和视图的位置:
this.getView().byId('myList').bindItems({
model: 'dicts',
path: `{/AncParams(p_dict_name='${p_dict_name}',p_rec_id=${p_rec_id})/Results}`,
template: new sap.m.StandardListItem({
title: '{dicts>NAME}'
})
});
你可以使用getModel('dicts').createKey
函数来生成路径名,我想这会更清洁一些。
这也是应用动态过滤器的方法,如果您构建它们。