2016-12-13 22 views
0

我有一個屬性可以通過動作修改,但Ember不會更新呈現的模板。當控制器的屬性被修改時,沒有更新模板

我的控制器:

selected_rows_id: [], 
actions: { 
    selectRow(rowId) { 
     let selected_rows = this.get('selected_rows_id'); 
     if (selected_rows.indexOf(rowId) === -1) { 
      selected_rows.push(rowId); 
      // selected_rows.pushObject(rowId); does not work either 
     } 
     this.set('selected_rows_id', selected_rows); 
    }, 
} 

在我的模板我使用{{selected_rows_id}}顯示我的元素

我創建了一個twiddle證明我做了什麼

回答

2

行動中沒有錯。問題出在模板上。此外,執行我的代碼邏輯的另一種方法是使用addObject,它檢查元素是否已被插入。

如果是像我這樣做的結構,就不能使用屬性。 您必須使用{{each}}幫助程序,它會小心地呈現更新後的值。

{{#each selected_rows_id as |rowId|}} 
    {{rowId}} 
{{/each}} 
+0

我認爲這是適合你的情況。如果您的{{property}}是數組或對象,車把將不會顯示任何內容 –

2

使用pushObjectpush

actions: { 
    selectRow(rowId) { 
     let selected_rows = this.get('selected_rows_id'); 
     selected_rows.pushObject(rowId); 
    }, 
} 
+0

它不起作用。我試過了。 – mk2

+0

啊哈是的,你需要迭代該數組。 – ykaragol

+1

我知道這是微不足道的。無論如何感謝:) – mk2

相關問題