2016-03-02 16 views

risposta

8

Se si desidera utilizzare orologio per osservare la vostra proprietà, si può chiamare il metodo con this.foo:

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

watch: { 
    questions: { 
     handler: function(val, oldVal) { 
      this.foo(); // call it in the context of your component object 
     }, 
     deep: true 
    } 
},  

methods: { 
    foo() { 
     console.log("foo called"); 
    } 
} 

Per rispondere alla tua domanda sul handler: Si tratta di una proprietà parola chiave che può prendere o un'espressione di funzione (come nell'esempio) o un riferimento a una funzione, come ad esempio:

function myHandler() { ... } // Defined somewhere outside of the vue component object 

... 

handler: myHandler, 

... 

Solo per curiosità: avete bisogno di guardare una proprietà al fine di fare qualcosa ogni volta che cambia o potrebbe computed properties risolvere il pr anche oblem?

+0

Ho ragione, capisco che su ogni cambio di dati 'foo' chiamerà? Ho bisogno di controllare i miei dati per le modifiche su ogni utente fare clic sulla casella di controllo. Quindi 'watch' abbastanza per me? Ora cambio i valori della struttura 'domanda' con' v-model = "firstLevelAnswer.isSelected" '. E ora non vedo alcuna modifica sulla console quando faccio clic sulle caselle di controllo. Mi aspetto che si chiami bene ogni volta che i 'dati' stanno cambiando. –

+0

Che cos'è 'firstLevelAnswer'? Con il tuo codice, stai solo osservando le modifiche alle 'domande'. Il nome della chiave nell'oggetto 'watch' è la proprietà che stai per guardare. – nils

+0

ecco le mie domande: http://www.everfall.com/paste/id.php?6blwxsym1kmm Ecco la parte principale del mio progetto: http://www.everfall.com/paste/id.php?yptv4v76qqmi –

Problemi correlati