我正在努力探索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>
在上面的示例中,您可以看到我在父级别设置了一些绑定,这是一种在控件级别简化模型绑定的形式。我认为这是可能的,但在文档中找不到它。
答案 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>