ODataModel (istemci tarafında) değiştirilecekse, atılacak bir olay arıyorum. Sorun şu ki, uygulamamda modeli düzenleyebilecek birçok farklı alan var. Bir model değişikliği durumunda "Kaydet" düğmesine izin veren bir fonksiyon kayıtlı olurdu. "Kaydet" düğmesi modelin submitChanges() öğesini çağırır (TwoWayBinding modunu kullanırım).SAPUI5: ODataModel durumunda bir olay bildirimi nasıl alınır?
Şu anda yalnızca "hasPendingChanges()" yöntemini tespit ettim, ancak kayıt olmam mümkün değil.
Bu sorunu çözmek için önerilen çözüm nedir?
Her "Giriş" denetimindeki değişimin üstesinden gelmek güzel bir yol değildir; çünkü bazı alanları unutmak kolaydır (en azından bir başkası kodu koruyacaksa).
Bulunduğum çözümler şimdi şuna benzer: Sen işlevi örneğin her seferinde modeli değişiklikleri denir 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
});
kullanabilirsiniz
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
}
});
nasıl sap.ui.model.odata.ODataModel.prototype.setProperty geçersiz kılma hakkında? – cschuff
Belgeleri kontrol ettim ve gerçekten aptal ama bir değişiklik olayı yok gibi görünüyor. Sanırım @cschuff'ın cevabı gitmek için bir yol. –