2016-08-10 1 views
1

Ich habe Array rasters_previews_list mit Daten.Uhr nicht zeigen Variable ändern

methods: 
    { 
     removeit: function (index) 
     { 
     this.rasters_previews_list.splice(index, 1) 
     } 

    }, 

watch: 
    { 
    rasters_previews_list : function(oldval, newval) 
    { 
     console.log("Value changed"); 
     console.log("oldval: ", oldval); 
     console.log("newval: ", newval); 

    } 

    } 

Ausgang:

oldval: Object1: Object2: Object3 
newval: Object1: Object2: Object3 

alt und neu sind gleich! Aber Element wurde entfernt!

Wird splice Array-Größe wie Vue-delete aktualisiert?

Das Problem, dass jedes Mal, wenn ich in der Konsole bin gleich oldval und newval. Ich weiß, dass js einige Einschränkungen haben, und zum Beispiel ist es nicht möglich, Array-Wechsel zu tracen. Und Vue dafür verwenden Methode set. Vielleicht ist es der gleiche Fall? Oder ist es ein anderes Problem?

Wirklicher funktionierender Code: http://5.200.52.99:8080/ login als Benutzer. Wählen Sie Europa mit Polygon aus und versuchen Sie dann, das gefundene Bild aus dem Bedienfeld mit der Schaltfläche X zu entfernen. Die Chrome-Konsole zeigt 2 gleiche Arrays an.

Die Aufgabe ist Track Wert verändernden in app wie http://vuejs.org/guide/#All-Together-Now mit watch

+1

Konnten Sie eine jfiddle verursachen, um das Problem zu veranschaulichen? – gurghet

+0

@Gurghet Ich habe einen Link zum Online-Projekt hinzugefügt. –

+0

Ja, aber dieser Link wird nicht ewig dauern, diese Fragen werden in den nächsten Monaten gelesen, es wäre besser, dauerhafte Links zu posten. – gurghet

Antwort

1

Haftungsausschluss: Ich habe aber, dass Sie .slice() verwenden sind. Solange Sie Spleiß verwenden, ist diese Antwort nicht gültig. Aber ich werde es hier für die Aufzeichnung behalten. Auch die Antwort enthält einen Link zur Dokumentation.

Ja, .splice() aktualisiert Array.


Nein, vuejs keine solchen Array Mutationen verfolgen:

Nach documentation:

Vue.js Verpackt einen Mutationsverfahren des beobachteten Array so werden sie auch Trigger Updates anzeigen.Die umwickelten Methoden sind:

  • push()
  • pop()
  • shift()
  • unshift()
  • splice()
  • sort()
  • reverse()

Und

filter(), concat() und slice(), die nicht immer die ursprüngliche Array mutiert aber ein neues Array

So ist die Idee, die Sie Array zurück mit einem neuen ersetzen:

example1.items = example1.items.filter(function (item) { 
    return item.message.match(/Foo/) 
}) 
+0

verfolgen Kann ich tun: 'removeit: Funktion (Index) { this.rasters_previews_list.pop (Index) } ' ? Ich brauche Änderungen in der App wie http://vuejs.org/guide/#All-Together-Now verfolgen –