0

在我的 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} }" >但没有运气。据我了解,表达式绑定不起作用。还有其他方法吗?

4

1 回答 1

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

这也是应用动态过滤器的方法,以防您曾经构建过这些过滤器。

于 2018-04-23T00:39:54.783 回答