2012-05-13 12 views
8

Basit bir cevabı olduğunu tahmin ettiğim bir şeye ulaşmaya çalışıyorum ama bir şekilde onu ember-data kaynak kodunu okuyamıyorum.Bir işlem gerçekleştirdikten sonra bir geri arama kurun

Veri deposuna belirli bir değişiklik kümesi yüklendikten sonra bir eylemi tetiklemek istiyorum. Bu benim geçerli kod:

var transaction = App.store.transaction(); 
user = App.get('currentUser'); 
transaction.add(user); 
user.set('name', "Michael Jackson"); 
transaction.commit(); 
App.navigate('dashboard'); 

Benim ilk girişimi bu kullanıcının isDirty mülkiyet üzerinde bir gözlemci eklemek, ama a) deyimsel görünmüyor ve daha da önemlisi b) Ben manuel o gözlemci kaldırmak zorunda kalacak son - örneğin istisnalar arasında bir istisna ortaya çıkar ve kaldırılmazsa hatalara eğilimlidir.

Herhangi bir fikrin var mı? Bunu nasıl yapardın?

cevap

6

Modelde didCreate ve didUpdate'i kullanabilirsiniz. Bir kullanıcı modeliniz var gibi varsayım var, örneğin:

MyApp.User = DS.Model.extend({ 
    first: DS.attr('string'), 
    page: DS.attr('string'), 
    didUpdate: function() { 
    //Do something 
    }, 
    didCreate: function() { 
    //do something 
    } 
}); 
+0

Wow. Kendimi çok aptalım. Bunu daha önce bulamadım: | - Benimle okumaya başladım! https://github.com/emberjs/data#record-lifecycle Teşekkürler! – josepjaume

+7

Şey, bu mantık modelin kendisine ait değil. Bu belirli bir içeriğe ait olmalıdır. yüzden kolayca olabilir https://github.com/emberjs/ember.js/commit/1809e65012b93c0a530bfcb95eec22d972069745#L0R19: model.one Kor geçenlerde bu durumda yararlı olabilir bir defalık bir olay geri arama tanıtıldı ('didCreate', function() {neyse}); – josepjaume

+2

Sadece herhangi bir model için bir taahhüt gerçekleştiğinde dönen global bir AJAX yükleyici resmi oluşturmak istiyorum. Bu nasıl yapılabilir? –

İlgili konular