我已经在我的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}"/>