1

Dies ist, wie ich machen das cases ObservableArray meiner AnsichtRe-render Nativescript Listview, wenn ObservableArray Artikel ändert

<ListView [items]="cases" class="list-group" *ngIf="cases"> 
    <ng-template let-case="item"> 

Say cases hat diese Werte:

cases = [{id: 1, name: "Sam"}, {id: 2, name: "Romio"}]

Wie kann ich meine ListView, um die Ansicht neu zu rendern oder irgendwie zu aktualisieren, wenn ich das erste Element so aktualisiere?

cases[0]["name"] = "Michael"

Antwort

2

Haben Sie versucht, die Änderung in NgZone zu übernehmen? Ich benutzte dies, um ein Array zu aktualisieren (nicht ObservableArray) und die entsprechende RadListView wurde automatisch aktualisiert.

+0

Yesss !! Dies ist die Antwort, danke. Es funktioniert wie ich es will und mit ListView. Obwohl ich es nicht verstehe, warum ngZone die Magie gemacht hat! – Mutaz

0

Sie gehen Unveränderlichkeit zu wollen hier erzwingen. Wenn Sie also das erste Objekt im Array mutieren müssen, würde ich es tun. Ich würde versuchen, den Spread-Operator danach zu verwenden.

cases[0]["name"] = "Michael" 
cases = [...cases]; 

wird diese cases auf eine neue Instanz eines Arrays festgelegt, die die Liste aktualisieren sollte.

+0

Ich habe bereits versucht, die Instanz zu ändern, aber nativescript rendern die Ansicht nicht neu, wenn Sie das tun, bis Sie etwas in der Benutzeroberfläche treffen. Jede Aktion, die Sie ausführen, reicht aus, um erneut zu rendern. Aber nur die Instanz selbst zu ändern ist nicht genug. Anstatt zu aktualisieren, habe ich auch versucht, dieselbe Instanz beizubehalten und das alte Objekt zu entfernen und das neue Objekt dem Array hinzuzufügen, aber ohne Erfolg. Nichts rendert die Ansicht neu, bis Sie etwas an der Benutzeroberfläche vornehmen! – Mutaz

Verwandte Themen