2016-08-24 135 views
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> 

的伎倆,但我不認爲這是一個很好的解決方案

+0

有關創建'shiftChanged'功能,讓你知道什麼時候'shift'屬性發生變化時(newShift復位)?你介意解釋爲什麼你需要重新創建整個自定義元素嗎? –

+0

是的,我可以解釋。 shift-form有很多由自定義元素的方法設置的變量,如果我使用shiftChanged,它們都需要重置。這實際上是更多的代碼,我可以忘記重置一些變量。 – antarktikka

+0

我不完全確定你想要做什麼,但爲什麼不移除第二個「newshift」形式,並且只是將一個新項目(可能是一個空對象)推到轉換數組上?然後,轉換表將爲您創建/銷燬。 – thinkOfaNumber

回答

0

由於阿什利格蘭特建議我有一個復位功能,但我不聽一變。我有一個元素的ref,我需要時在外面調用reset函數。

<some-element controller.ref='someVariableNameHere'></some-element> 

,並使用該REF控制器:

this.someVariableNameHere.viewModel.reset(); 
相關問題