2017-08-14 21 views
6

test edilirken sıfırlanmadı Şu anda iç içe geçmiş bir yol üzerinde bir kabul testi yapmaya çalışıyorum, bu da aynı bileşenin iki kez kullanılmasını, ancak farklı argümanlarla kullanılmasını sağlıyor. Normal olarak çalıştırdığımda bu iyi çalışır, ancak kabul testini çalıştırdığımda, bileşenin argümanlarının güncellenmediğini fark eder ve bu da testimin başarısız olmasına neden olur. index.hbs yılındaEmber.js: Bileşen özniteliği

Ben:

{{index-view model=model type='location'}} 

Benim index-view bileşen şöyle görünür: İşte bazı örnek kod listing-table bir öğeye tıklayarak

<h1>{{title}} List</h1> 

{{listing-table model=model type=type}} 

, o zaman gidin link-tolocations.show.devices yolunu içeren locations.show yolu. locations.show.devices rota içerir:

{{listing-table model=model.devices type='device' exclude='locationName'}} 

Ancak, benim kabul testlerinde, ben güncellenmektedir model ederken ve type ki (bileşenin javascript bu özelliklerin dışında yankılanan tarafından) görebilirsiniz, exclude daima kuruldu olursa olsun ayarlandığında bileşen başlangıçta çağrıldığında.

Şimdi, bileşen yeniden veya gerçekleştirildiği olup olmadığını (console.log() aracılığıyla) kontrol ettim ve init() ve didDestroyElement() hem bileşen iki kez bütün bir yaşam döngüsü geçer, yani iki kere denir görebiliyordu. Bununla birlikte, neden exclude argümanımın neden güncellenmediğini gerçekten anlayamıyorum ve bu neden sadece kabul testi sırasında gerçekleşiyor?

This is a stripped down version of what I'm doing (tabii ki Twiddle üzerinde çalışır, ancak gerçek hayatta değil!).

+0

Söz konusu bileşeninize yapıştırabilir misiniz? Belirli bir bileşenle ilgili bir şey çıkmış gibi geliyor ... – acorncom

+0

Sorunun giderilip giderilmeyeceğinden emin değilsiniz, ancak bir özelliğin veya nesnenin varsayılan değerini ayarlarsanız durum paylaşılabilir. Her ikisini de yapmakta olduğunuza inandığınız gibi, 'init()' de varsayılanları sıfırlayabilirsiniz, bu yüzden soruna neden olan şey bu olduğundan emin değilim. Burada paylaşım durumu hakkında daha fazla bilgi: https://stackoverflow.com/a/19071065/916734 –

+0

@acorncorn: [burada] (https://gist.github.com/finferflu/f4832e7dd6e3bcc78bbe5a0abfd87ee3) bileşenimin js'idir. – finferflu

cevap

1
{{listing-table model=model.devices type='device' exclude='locationName'}} 

Eğer bileşenin özelliği .locationName bağlantı vermiyor belli bir değer "locationName" (dize) geçmektedir. (Ben yaklaşık locationName hakkında alıntılar hakkında)

Biliyor musunuz, evet?

+0

Evet, sadece bir dizgi olması amaçlanıyor. Benim bileşenimde (bkz. [Burada] (https: //gist.github.com/finferflu/f4832e7dd6e3bcc78bbe5a0abfd87ee3 # file-listing-table-js-L73)), sonra bu dizeyi bir diziye dönüştürüyorum. – finferflu

+0

@finferflu 'Model ve tür güncellenirken, hariç tutma her zaman bileşen başlangıçta çağrıldığında ayarlanmış olana ayarlanır.' –

+0

Neyi kastettiğimi anladığımdan emin değilim, ama 'exclude' argümanı bir nesne değil, bir dize olmalıydı. – finferflu