如何将表单元素正确绑定到 SAPUI5 中新创建的 oData 实体?



我已经在我的SAPUI5应用程序中实现了oData服务。

按下按钮时,将触发 oData 模型createEntry(),该返回包含新创建的实体的上下文。

根据 SAPUI5 文档 - 文档(创建实体(,在我的表单上调用setBindingContext(oContext)将我的新实体绑定到我的表单就足够了。

但无论我如何尝试,我似乎都无法让绑定工作。输入字段保持为空(尽管实体已设置属性(。

在尝试使用 oData 模型执行此类绑定时,是否需要牢记特殊语法?

我的表格:

<f:SimpleForm id="form" editable="true" layout="ResponsiveGridLayout" title="Address" labelSpanXL="3" labelSpanL="3" labelSpanM="3"
labelSpanS="12" adjustLabelSpan="false" emptySpanXL="4" emptySpanL="4" emptySpanM="4" emptySpanS="0" columnsXL="1" columnsL="1" columnsM="1"
singleContainerFullSize="false">
<f:content>
<Label text="Recno"/>
<sf:SmartField id="recno" value="{recno}"/>
</f:content>
</f:SimpleForm>

打开包含表单的对话框的方法:

openCreateDialog: function() {
this.getOwnerComponent().getModel("oDataModel").refreshSecurityToken(function() {
var oContext = this.getOwnerComponent().getModel("oDataModel").createEntry("/head", {
properties: {
recno: "100"
}
});
this.byId("form").setBindingContext(oContext);
}.bind(this), function(data) {
console.log(data);
}, true);
this.byId("CreateHeadDialog").open();
},

编辑

我已经尝试过{oDataModel>xxx},但这不起作用。 另一方面,在我将我的oDataModel设置为无名称模型后,它似乎工作正常。智能字段正确显示正确的值,但我在 UI 中所做的更改不会应用于我的智能字段绑定到的属性。

当我提交 oDataModel 的挂起更改时,我的实体的所有属性都保持未定义,尽管我用正确的值填充了智能字段。

您正在使用命名模型:您的模型名称是"oDataModel"在您的代码中证明了这一点:

.getModel("oDataModel")

在 XML 视图中使用绑定语法时,需要在字段前面加上命名的模型名称,如下所示:

<sf:SmartField id="recno" value="{oDataModel>(your-path-to-object)recno}"/>

如果它不在列表中,则需要按如下方式引用该字段(或根据 recno 在 json 层次结构中的位置进行导航:

<sf:SmartField id="recno" value="{oDataModel>/recno}"/>

最新更新