2016-12-13 3 views
0

Ich habe ein Attribut, das ich durch eine Aktion ändern, aber Ember aktualisiert die gerenderte Vorlage nicht.Ember nicht aktualisieren Vorlage, wenn Attribut des Controllers geändert wird

Mein Controller:

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); 
    }, 
} 

In meiner Vorlage ich {{selected_rows_id}} bin mit meinen Elemente zeigen

ich ein twiddle erstellt habe zu zeigen, was ich getan habe

Antwort

2

Es war nichts falsch an der Aktion. Das Problem war mit der Vorlage. Eine weitere Möglichkeit, die Logik meines Codes zu machen, war die Verwendung addObject, die prüft, ob das Element bereits eingefügt wurde oder nicht.

Man kann ein Attribut nicht verwenden, wenn es eine Struktur ist, wie ich es gemacht habe. Sie müssen den {{each}} Helper verwenden und es wird darauf achten, den aktualisierten Wert zu rendern.

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

Ich denke, das ist richtig für deine Situation. Der Lenker zeigt nichts an, wenn dein {{property}} Array oder Objekt ist –

2

Verwenden pushObject nicht push:

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

Es funktioniert nicht. Ich habe es versucht. – mk2

+0

Aha Ja, Sie müssen über dieses Array iterieren. – ykaragol

+1

Ich wusste, es war etwas Triviales. Danke trotzdem :) – mk2

Verwandte Themen