2016-03-21 21 views
1

ile nasıl yenilenir WAF ile nesneyi yenilemek için serverRefresh() yöntemini kullanmadan önce. init olay sunucusu tarafını tetikler.Bir varlık daha önce kaydedilmeden önce, angular-wakanda API

Şimdi bunu açısal-wakanda konektörü ile yapmanın bir yolunu göremiyorum.

Bir şey mi eksik?

Angular-Wakanda konnektörü ile kaydetmeden önce yeni oluşturulan bir varlık için bazı verileri nasıl başlatabilirim?

cevap

2

Versiyon 1.1.0 ve üzeri (5/11/16 itibaren) sürüm 1.1.0 ve daha yüksek, eski aynı şeyler yapmak $recompute() yöntemi, kullanmak zorunda (aşağıya bakınız) ile

$serverRefresh() metodu.

Dökümantasyonunu Angular-Wakanda Entity API Reference numaralı telefondan bulabilirsiniz.

Eğik-Wakanda akım sürümü (1.0.4) Açık Sürüm < 1.1.0

, sen hala yapabileceği varlık üzerinde $serverRefresh() arayarak. ne yapar $serverRefresh()

var entity = ds.Product.$create(); 
entity.$serverRefresh().$promise.then(function() { 
    //Your entity is updated with calculated attributes filled, and right events executed 
}); 

şudur: yeni oluşturulan öznitelik (henüz kaydedilir) Açık

  • , bu init sonra clientrefresh olaylar sunucu tarafında tetikleyecek, daha sonra istemci tarafı varlık güncelleştirmek
  • zaten kaydedilmiş varlık üzerinde
  • , bu clientrefresh olay sunucu tarafında tetikleyecek, daha sonra güncelleme istemci tarafı varlık

Gerçekten de, kullanımdan kaldırıldı ve kaldırılacak. Ancak, 1.1.0 sürümünde, aynı davranışa sahip olacak başka, iyi belgelenmiş ve belirsiz bir yöntemle değiştirilecektir.

+0

Teşekkürler. Bunu test edip geri bildireceğim. Kulağa harika geliyor. Yeni sürüm için repo özel mi? – Ganbin

+0

@Ganbin Evet, şimdilik özeldir, yakında yayınlanacak. – Blackus

0

Varlığınızda $fetch() yöntemini kullanmanız gerekir; tüm özelliklerini alır ve günceller, ardından değişikliklerinizi uygulayın ve $ save() öğesini çağırın. $ ServerRefresh() Bundan angular-wakanda doc

+0

$ getirme yöntemi, init olayını tetiklemez. – Ganbin

+0

Init olayı, sunucudaki bellekte yeni bir varlık oluşturulduktan hemen sonra tetiklenir. Sen "lastName" özelliğine bir init olayını ilişkilendirmek için özellik değerlerini başlatmak için bu olayı kullanabilirsiniz: model.Employee.lastName.events.init = function (event) { this.lastName = " "; } $ $ kullanarak yeni bir varlık oluşturduğunuzda, init olayı tetiklenir. –

+0

Teşekkürler Bütün bunları biliyorum. Bu init olayını açısal konnektörle tetiklemeyi başaramıyorum. V1'den önce Wakanda'yı kullanıyorum (2012). Wakanda iş akışının tamamen farkındayım. Henüz oluşturulmamış ve veritabanında depolanan yeni varlık için $ getirme yöntemi uygulanamaz. – Ganbin

1

kaldırılmış özellik ve kesinlikle Açısal-Wakanda bağlayıcı bir sonraki 1.1.0 sürümünde kaldırılacak:

da bakın. Varlığınızda $ fetch() yöntemini kullanabilir, yeniden getirip tüm özelliklerini günceller. Daha sonra değişikliklerinizi uygulayın ve $ save() öğesini çağırın. Yeni düzenlendi varlık için , aşağıdaki gibi devam edebilirsiniz:

  var newProduct = ds.Product.$create(); 
      newProduct.productName = "myProductName"; 
      newProduct.price = 5.5; 
      newProduct.$save(); 

Ve tasarrufu bu $() olay init tetikleyebilir().

+0

içinde serverRefresh() ile aynı şeyi yapan bir yöntem yoktur. $ create yöntemi init olayını tetiklemez. – Ganbin

+0

Sadece test ettim, init olayını herkese açık hale getirdiğinden emin misin? yaptıysanız, bir kesme noktası ekleyin ve hata ayıklayıcının çalışıp çalışmadığını görün. –

+0

Bu garip. Benim tarafımda, $ create yöntemi init yöntemini tetiklemiyor. Herkesi yaptım (bir olay sunucusu tarafının kapsamını ayarlamak zorunda kalmasaydım bile, benim için garip geliyordu) $ create metodu sunucuya hiç bir şey yapmıyor, böylece bir şeyi nasıl tetikleyebilir ki? Varlıktan tasarruf etmediğinden emin misin? Çünkü kaydetme init'i bile tetikleyecektir. Ama benim durumumda, kaydetmeden önce bazı dosyaları başlatmak istiyorum. – Ganbin

İlgili konular