Model.createEntry绑定表单后输入值变更未更新模型问题求助
问题解决:表单输入未同步到OData模型的待变更列表
核心原因
ODataModel 默认绑定模式为 OneWay,UI控件的修改不会自动同步回模型;只有显式设置双向绑定(TwoWay),输入值才会被捕获到模型的待变更(pending changes)中。此外还需检查实体属性的可写性和绑定路径正确性。
解决方案
1. 为输入控件设置双向绑定
在每个Input的value绑定中显式指定mode="TwoWay",示例:
<Label text="Description" required="true"/> <Input value="{path: 'Qmtxt', mode: 'TwoWay'}"/> <Label text="Material"/> <Input id="matnr" value="{path: 'Matnr', mode: 'TwoWay'}"/> <Label text="Plant"/> <Input id="werks" value="{path: 'Mawerk', mode: 'TwoWay'}"/> <!-- 其他输入控件同理添加 mode: 'TwoWay' -->
2. 全局设置模型默认绑定模式(可选)
如果希望所有绑定默认都是双向的,可在manifest.json的模型配置中设置defaultBindingMode:
"models": { "": { "dataSource": "mainService", "settings": { "defaultBindingMode": "TwoWay", "odataVersion": "2.0" // 根据你的OData版本调整 } } }
3. 验证元数据中属性的可写性
检查OData服务元数据里,LatentDefectSet的对应属性是否标记为可更新:
<Property Name="Qmtxt" Type="Edm.String" sap:updatable="true"/>
若sap:updatable为false,模型会忽略该属性的变更,需调整服务端配置。
4. 确认绑定路径拼写正确
确保输入控件绑定的属性名(如Qmtxt、Matnr)与元数据中的实体属性名完全一致(大小写敏感),避免拼写错误导致无法同步。
验证修改
修改后,输入值并点击保存按钮前,调用model.getPendingChanges()应该能看到所有修改过的属性;执行model.submitChanges()即可将所有变更提交到服务端。
内容的提问来源于stack exchange,提问作者Fishrage_
相关产品推荐
相关产品推荐

