SAPUI5 - 如何在动态绑定中设置值到输入参数

时间:2018-04-22 18:03:08

标签: sapui5 xsodata

在我的XSOData服务中,我有一个基于带输入参数的计算视图的实体。我可以在XML视图中将这些参数设置为常量,即

<List items="{dicts>/AncParams(p_dict_name='GROUPS',p_rec_id=2)/Results}" >
        <StandardListItem
          title="{dicts>NAME}"
          />
    </List>

它会正常工作。

但我如何动态设置参数p_dict_namep_rec_id?我试图使用表达式绑定来获取另一个模型的参数值(类似这样:<List items="{= ${dicts>/AncParams(p_dict_name='GROUPS',p_rec_id=${DictUIProps>/parentId})/Results} }" >),但没有运气。据我了解,表达式绑定不起作用。还有其他办法吗?

1 个答案:

答案 0 :(得分:1)

据我所知,您无法通过XML动态进行聚合绑定。至少在我使用的版本中没有,我不得不承认我暂时没有重新检查。在将内部绑定应用于模型之前,永远不会解释该字符串。

我这样做的方法是通过控制器:

<List id="myList" />

并在您的控制器中onBeforeRenderingonPatternMatched或控制器知道您的模型和视图的位置:

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函数来生成路径名,我想这会更清洁一些。

这也是应用动态过滤器的方法,如果您构建它们。