在父级别设置绑定模型

时间:2018-04-29 13:33:48

标签: sapui5

我正在努力探索SAPUI5,并考虑简化某些事情,但却无法让它发挥作用。我有一个简单的表单,在XML视图中几乎没有控件。现在我正在为这些控件分配一个模型属性。模型像往常一样在控制器文件中创建。我的XML视图在下面

<form:SimpleForm>
  <Label text="Name" />
  <Input value="{search>/criteria/name}" />
  <Label text="Desc" />
  <Input value="{search>/criteria/desc}" />
</form:SimpleForm>

现在在上面的XML视图中,我有一个附加到模型的输入值,但每次添加新输入时,我都必须编写search>/criteria/propName。我只想避免这种情况。我想要达到的目标如下:

<form:SimpleForm setBindingHereAtParent="{search>/criteria}">
  <Label text="Name" />
  <Input value="{name}" />
  <Label text="Desc" />
  <Input value="{desc}" />
</form:SimpleForm>

在上面的示例中,您可以看到我在父级别设置了一些绑定,这是一种在控件级别简化模型绑定的形式。我认为这是可能的,但在文档中找不到它。

2 个答案:

答案 0 :(得分:0)

据我所知,没有选择设置&#34; ParentBinding&#34;。

我想到的缩短绑定的唯一方法是将search模型设为View的默认模型,这样就可以省略Bindings中的search>

我不会使用&#34; ParentBinding&#34;即使它存在,因为它更清晰,更易读,更容易理解每​​个绑定被写出来。

答案 1 :(得分:0)

您始终可以使用新的模型名称在任何给定控件上设置模型;在我们的情况下,作为默认模型。此外,您可以利用element binding的优势,这样一来,您实际上只需要编写一旦通过JS中的bindElement或XML中的binding即可使用的属性名称,即可解析

看看这个例子:https://embed.plnkr.co/qUswghbLaQtJnPFd

onInit: function() {
  const searchModel = this.getOwnerComponent().getModel("search");
  this.byId("mySimpleForm").setModel(searchModel/*, no model name*/);
},
<form:SimpleForm
  id="mySimpleForm"
  binding="{/criteria}"
>
  <Label text="Name"/>
  <Input value="{name}"/>
  <Label text="Description"/>
  <Input value="{desc}"/>
</form:SimpleForm>