2014-11-07 22 views
6

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 
    } 
}); 
+2

nasıl sap.ui.model.odata.ODataModel.prototype.setProperty geçersiz kılma hakkında? – cschuff

+0

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. –

cevap

7

. model.setProperty(key, value) numaralı telefonu arayarak.

https://openui5.netweaver.ondemand.com/#docs/api/symbols/sap.ui.model.Binding.html

+0

'Sap.ui.model.Binding' ile ilgili sorun, yeni bir nesne aldığımız her seferinde tekrar kayıt olabilmek, bu yüzden aynı fonksiyonu iki kez çağırıyor olmamız, var olan sap.ui.model için herhangi bir yol var mı? .Binding' object, – MH09

+0

Bir yöntem 'someObject.getBinding();' (https://openui5.hana.ondemand.com/#docs/api/symbols/sap.ui.base.ManagedObject.html#getBinding) var . Ben de orada olay ekleyebilirsin. – herrlock

+0

Merhaba, bu eklentiyi çeviricide nerede ayarlıyorsunuz? – alexd