event handling - SAPUI5: ¿Cómo obtener una notificación de evento en caso de cambios en ODataModel?
event-handling (1)
Estoy buscando un evento que se lanzará si se cambia el ODataModel (en el lado del cliente). El problema es que en mi aplicación hay muchos campos diferentes que pueden editar el modelo. En el caso de un cambio de modelo, tendría una función registrada que habilita un botón "Guardar". El botón "Guardar" llamará a los submitChanges () del modelo (utilizo el modo TwoWayBinding).
Actualmente solo detecté el método "hasPendingChanges ()", pero no pude registrar ningún evento.
¿Cuál es la solución sugerida para manejar este problema?
Controlar el cambio en cada control de "Entrada" no parece una buena manera, porque es fácil olvidar algunos campos (al menos si alguien más mantiene el código).
Mis soluciones actuales son similares a esto ahora:
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
}
});
Puede usar 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
});
La función se invoca cada vez que cambia el modelo, p. Ej. llamando a model.setProperty(key, value)
.
https://openui5.netweaver.ondemand.com/#docs/api/symbols/sap.ui.model.Binding.html