2015-01-06 28 views
6

vuruldum almaz gözlemlemek emberjs bileşeninde bir senaryo var. "nedenini gözlemlenen bileşen özelliği ayarlandığında henüz eklenmemiş olan nedeni anladım." ember.js

Benim sorulara

, bu kor js içinde daha iyi bir şekilde ele alınması edemedim edilir?

Daha iyi açıklama aşağıda jsbin`s bulunabilir.

Not working Scenario

Working scenario

+0

? Bu senaryoda, her iki gözlemci işlevi, hesaplanmış bir özellik olarak daha iyi sunulacaktır ("Ember.Computed" aracılığıyla). – awgreenarrow08

+0

Anlaştık, gözlemciler her iki durumda da aşırı doluydu – Kingpin2k

+0

Yorumlarda belirtmiş olduğum gibi, bu bir örnek ve gerçek kullanım durumu değildi. Gerçek kullanım durumu çok büyük bir şey, basitçe onu düşünmeyi düşündüm. Temel olarak, gözlemcideki bir çok hesaplama var ve onun sadece bir başka özelliğe atamadığı değil Ayrıca " " dediğinizde "her iki gözlemci işlevi hesaplanan özellik olarak daha iyi sunulacak" bileşeninde hesaplanmış özellik kullanırsanız aynı sebepten dolayı gözlemci çalışmıyor – wallop

cevap

14

Haklısınız başlatmasından sonra çalıştırmak gözlemci zorlamak için .on('init') belirtebilirsiniz; Aksi @ Kingpin2k gibi sözü - onlar

App.TextboxDisplayComponent = Ember.Component.extend({ 
    displayText: '',   

    boundProperty: '', 

    observeBoundProperty: function() { 
    this.set('displayText', this.get('boundProperty'));   
    }.observes('boundProperty').on('init') 
}); 

Kişisel (olmayan) çalışma örneği tüketmemek here

Burada tam olarak gerçekleştirmek için çalışıyoruz ne
+1

tam olarak ne istedim teşekkür ederim Bunu denediğimde, gözlemcinin sadece "on ('init')" düğmesine basacağını ve olağan değişiklikler olduğunda vurulmayacağını düşündüm. Şimdi bunu test ettim ve – wallop

+0

arasında bir değişiklik olduğunda bile gerçekleşir. Ancak bu kavramı neden daha önce kullandığımı fark ettim, bununla bir yakalama var! observeBoundProperty, boundProperty değiştirilmese bile init üzerinde olur. Eğer gözlemcinin sadece değişime isabet etmesini istediysem o zaman çok yardım etmeyecektim:) Ancak bunun içinde bir durum kontrolüne ve en önemlisi daha temiz bir versiyona sahip olabilirdim! – wallop