0
如何在更新綁定對象時開始創建自定義元素的新實例? 假設我有一個可以被用戶更改的視圖中的visitDate。當它改變時,我想更新頁面的內容。 查看模型:Aurelia自定義元素實例創建
...
visitDateChanged() {
this.shifts = [];
this.newShift = {};
this.newShift = {pstart: this.visitDate, pstop: this.visitDate});
this.service.getData(this.visitDate)
.then(result => this.shifts = result);
}
}
視圖:
<div repeat.for="shift of shifts | filterDate: visitDate">
<shift-form shift.bind="shift" shifts.bind="shifts"></shift-form>
</div>
<div>
<shift-form shift.bind="newShift" shifts.bind="shifts"></shift-form>
</div>
注:移位形式是定製元件。現在,如果我在視圖中更改了visitDate,它會調用visitDateChanged()並更新newShift並移動變量。它分離所有在div repeat.for中調用的移位形式實例,並根據移位數組內的對象附加新實例。但它不會在第二個div內分離並重新附加移位形式(不會創建移位形式的新實例)。當newShift被重新創建時,我需要div內的一個新的shift-form實例。我設法通過將newShift從一個對象更改爲一個數組來實現它。然後
<div repeat.for="shift of newShift">
<shift-form shift.bind="shift" shifts.bind="shifts"></shift-form>
</div>
的伎倆,但我不認爲這是一個很好的解決方案
有關創建'shiftChanged'功能,讓你知道什麼時候'shift'屬性發生變化時(newShift復位)?你介意解釋爲什麼你需要重新創建整個自定義元素嗎? –
是的,我可以解釋。 shift-form有很多由自定義元素的方法設置的變量,如果我使用shiftChanged,它們都需要重置。這實際上是更多的代碼,我可以忘記重置一些變量。 – antarktikka
我不完全確定你想要做什麼,但爲什麼不移除第二個「newshift」形式,並且只是將一個新項目(可能是一個空對象)推到轉換數組上?然後,轉換表將爲您創建/銷燬。 – thinkOfaNumber