ich ein Modell, in dem ich ein Array auf Ajax-Erfolg bin Initialisierung nach dem Modell montiert istVueJs - DOM nicht aktualisiert auf Array-Mutation
var self = this;
$.getJSON("somejson.json",
function (data) {
var list = [];
list = data.list.map(function (item) {
return { id: item.id, text: item.text };
});
self.selectableItems = list;
});
Ich habe einen Klick-Methode auf jedes dieser Elemente, die entfernt der Artikel von selectableItems
select: function (item) {
this.selectableItems.pop(item);
},
selectableItems macht richtig zunächst, aber wenn ich das Array mutieren, ist die dom nicht aktualisiert. Obwohl das tatsächliche Array korrekt geändert wird.
Ich verifizierte dies, indem ich eine berechnete Eigenschaft habe, die die Anzahl der auswählbaren Artikel zurückgibt. Diese Anzahl wird korrekt aktualisiert, wenn das Objekt entfernt wird, aber das Dom zeigt immer noch das Objekt an.
Ich bemerkte auch, dass, wenn ich den Wert von selectableItems im Ajax hart Code, alles funktioniert wie erwartet!
self.selectableItems = [{ id: 1, text: "adsad"}];
Ich bin mir der Vorbehalte der Array-Mutation in Vue bewusst. Aber ich fühle, dass ich etwas Grundlegendes vermisse, da ich gerade angefangen habe, Vue zu erforschen. Kann jemand darauf hinweisen, was ich vermisse?
Sie 'Array.prototype.pop()' 'für this.selectableItems.pop verwenden (Artikel); '? Was ist das Argument? https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/pop – choasia
ah ziemlich dumm von mir! Ich war so in Vuejs Konzepte zu erkunden, ich habe die Definition für array.pop() vergessen. Danke trotzdem!. –