2017-04-18 6 views
0

nehme ich an einen Beobachter, die mylistVueJS programmatisch Update auslösen auf beobachtete Variable

watch { 
mylist:function(){ 
    //Code 
} 
} 

Wie ein Array zusieht kann ich programmatisch ein Update auf die Variable auslösen und den Code ausführen (wenn die Variable unverändert ist)? Wie kann ich ein Update auslösen, wenn die beobachtete Variable ein verschachteltes Objekt/Array oder eine einfache Zeichenfolge ist?

+1

Bitte geben Sie einige Details darüber, warum Sie es auf diese Weise tun wollen, vielleicht gibt es eine bessere Art und Weise zu tun es. –

Antwort

1

Da Sie keine Beschreibung zum tatsächlichen Anwendungsfall angegeben haben, können Sie eine Methode, die aufgerufen wird, wahrscheinlich am besten manuell aufrufen.

data: function() { 
    return { myList: [] } 
}, 

watch: { 
    myList: this.handleListChange 
}, 

methods: { 
    handleListChange: function(a, b) { 
     // .. do whatever you want to do in the watch method 
    } 
} 

Um die „watch“ -Methode auslösen Sie Ihre handleListChange Methode manuell jetzt einfach aufrufen können.

0

Es gibt zwei Fragen:

Wie kann ich programmatisch ein Update auf die Variable auslösen und den Code ausführen, wenn die Variable unverändert ist?

Sie können es auf diese Weise hacken:

this._watchers.find(w => w.expression === "mylist").cb(this.mylist); 

Es ist jedoch nicht Teil der offiziellen Vue API. Die _watchers Liste ist eher ein Implementierungsdetail. Es kann sich in Zukunft ohne Ankündigung ändern.


Wie kann ich auslösen ein Update, wenn die beobachtete Variable ein verschachteltes Objekt/Array?

einen tiefen Beobachter Verwendung:

watch: { 
    mylist: { 
    handler: function(val) { 
     // Code 
    }, 
    deep: true 
    } 
} 

Arbeitsbeispiel: https://jsfiddle.net/LukaszWiktor/zjagahq2/

Verwandte Themen