2017-08-14 18 views
6

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 modeltype đ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()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!).

+0

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

+0

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 –

+0

@acorncorn: [tại đây] (https://gist.github.com/finferflu/f4832e7dd6e3bcc78bbe5a0abfd87ee3) là js của thành phần của tôi. – finferflu

Trả lời

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

bạn vượt qua giá trị nhất định "locationName" (string) không liên kết đến tài sản .locationName của thành phần. (Tôi đang báo giá khoảng locationName)

Bạn biết không?

+0

Có, nó chỉ là một chuỗi. Trong thành phần của tôi (xem [tại đây] (https: //gist.github.com/finferflu/f4832e7dd6e3bcc78bbe5a0abfd87ee3 # file-listing-table-js-L73)), sau đó tôi chuyển chuỗi đó thành một mảng. – finferflu

+0

@finferflu Tôi là về câu hỏi của bạn 'trong khi mô hình và loại đang được cập nhật, loại trừ luôn được đặt thành bất kỳ thứ gì được đặt khi thành phần ban đầu được gọi.' –

+0

Tôi không chắc mình hiểu ý của bạn là gì, nhưng đối số 'exclude' được cho là một chuỗi chứ không phải là một đối tượng. – finferflu

Các vấn đề liên quan