Tôi hiện đang thử nghiệm chấp nhận trên tuyến đường lồng nhau, sử dụng cùng một thành phần hai lần, nhưng với các đối số khác nhau. Điều này hoạt động tốt khi tôi chạy nó bình thường, tuy nhiên khi tôi chạy thử nghiệm chấp nhận, tôi nhận thấy rằng các đối số của thành phần không được cập nhật, điều này làm cho thử nghiệm của tôi thất bại. Dưới đây là một số mẫu mã:Ember.js: Thuộc tính thành phần không được đặt lại trong khi thử nghiệm
Trong index.hbs
tôi có:
{{index-view model=model type='location'}}
phần index-view
của tôi trông như thế này:
<h1>{{title}} List</h1>
{{listing-table model=model type=type}}
Bằng cách nhấp vào một phần tử trong listing-table
, tôi sau đó đi đến Tuyến đường locations.show
, có chứa tuyến đường link-to
tuyến locations.show.devices
. Các tuyến đường locations.show.devices
chứa:
{{listing-table model=model.devices type='device' exclude='locationName'}}
Tuy nhiên, trong các thử nghiệm chấp nhận của tôi, tôi có thể nhìn thấy (bằng cách lặp lại ra những thuộc tính này trong javascript của thành phần) rằng trong khi model
và type
đang được cập nhật, exclude
luôn thiết lập để bất cứ điều gì đã được thiết lập khi thành phần ban đầu được gọi.
Bây giờ, tôi đã kiểm tra (thông qua console.log()
) cho dù thành phần đang được sử dụng lại hay không, và tôi có thể thấy rằng cả hai init()
và didDestroyElement()
được gọi hai lần, có nghĩa là thành phần đó trải qua toàn bộ vòng đời hai lần. Tuy nhiên, tôi không thể hiểu tại sao đối số exclude
của tôi không được cập nhật, và tại sao điều này chỉ xảy ra trong khi thử nghiệm chấp nhận?
This is a stripped down version of what I'm doing (tất nhiên nó hoạt động trên Twiddle, nhưng không phải trong cuộc sống thực!).
Bạn có thể dán vào thành phần được đề cập không? Có vẻ như điều gì đó không đúng với thành phần cụ thể của bạn ... – acorncom
Bạn không chắc chắn điều này có khắc phục được sự cố hay không, nhưng trạng thái có thể được chia sẻ nếu bạn đặt mặc định của thuộc tính thành mảng hoặc đối tượng. Dường như bạn đang làm cả hai _and_ đặt lại mặc định trong 'init()' vì vậy tôi không chắc chắn nếu đó là những gì gây ra vấn đề. Dưới đây là thông tin thêm về trạng thái chia sẻ: https://stackoverflow.com/a/19071065/916734 –
@acorncorn: [tại đây] (https://gist.github.com/finferflu/f4832e7dd6e3bcc78bbe5a0abfd87ee3) là js của thành phần của tôi. – finferflu