use*_*327 9 event-handling odata sapui5
我正在搜索如果ODataModel(在客户端)将被更改将抛出的事件.问题是,在我的应用程序中有许多能够编辑模型的不同字段.如果是模型更改,我会注册一个启用"保存"按钮的功能."保存"按钮将调用模型的submitChanges()(我使用TwoWayBinding模式).
目前我只检测到"hasPendingChanges()"方法,但没有我可以注册的事件.
处理此问题的建议解决方案是什么?
要处理每个"输入"控件的更改看起来不是一个好方法,因为很容易忘记某些字段(至少如果其他人将维护代码).
我现在的解决方案现在看起来与此类似:
sap.ui.model.odata.ODataModel.extend("MyModel", {
setProperty : function(sPath, oValue, oContext) {
sap.ui.model.odata.ODataModel.prototype.setProperty.apply(this, [sPath, oValue, oContext]);
// do something here
}
});
Run Code Online (Sandbox Code Playgroud)
her*_*ock 10
您可以使用 sap.ui.model.Binding.attachChange()
var binding = new sap.ui.model.Binding(model, "/", model.getContext("/"));
binding.attachChange(function() {
saveButton.setVisible(true);
saveButton.setEnabled(true);
//or anything else
});
Run Code Online (Sandbox Code Playgroud)
每次模型更改时都会调用该函数,例如.通过电话model.setProperty(key, value)
.
https://openui5.netweaver.ondemand.com/#docs/api/symbols/sap.ui.model.Binding.html