Ano*_*ous 14 watch vue.js vuejs2
我的数据对象:
data: {
selected: {
'type': null,
'instrument': null
},
Run Code Online (Sandbox Code Playgroud)
我的模板:
<select v-model="selected['instrument']" @change="switchFilter('instrument', $event)">
<option v-for="instrument in instruments" :value="instrument.value">@{{ instrument.text }}</option>
</select>
<select v-model="selected['type']" @change="switchFilter('type', $event)">
<option v-for="type in types" :value="type.value">@{{ type.text }}</option>
</select>
Run Code Online (Sandbox Code Playgroud)
如何同时查看两个选定的索引?每当任何索引更新时,我想做类似的事情:
watch: {
selected: function(o, n) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
Sau*_*abh 20
您可以使用来自vue deep的观察者提供的选项.如文档中所述:
要检测对象内的嵌套值更改,还需要在options参数中传入deep:true.请注意,您不需要这样做来侦听Array突变.
您的代码如下所示:
watch: {
'selected': {
handler: function (val, oldVal) {
console.log('watch 1', 'newval: ', val, ' oldVal:', oldVal)
},
deep: true
}
}
Run Code Online (Sandbox Code Playgroud)
小智 9
我认为您可以这样做:
watch: {
$data: {
handler: function(val, oldVal) {
console.log(val)
},
deep: true
}
},
Run Code Online (Sandbox Code Playgroud)
watch: {
'selected.type': function (newSelectedType) {
console.log(newSelectedType)
},
'selected.instrument': function (newSelectedinstrument) {
console.log(newSelectedinstrument)
}
}
Run Code Online (Sandbox Code Playgroud)
如果您只是尝试计算新数据selected,则可以使用计算属性,因为Vue的数据是被动的,计算属性也可以检测数据的变化.
如果你想使用一个单一的功能观看整个对象,你可以用$watch与deep: true:
mounted () {
this.$watch('$data.selected', this.onSelectedUpdate, { deep: true })
}
Run Code Online (Sandbox Code Playgroud)
请注意,这'$data.selected'是一个字符串,Vue将解析它.
在你的方法中:
onSelectedUpdate (newSelected) {
console.log(newSelected)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12443 次 |
| 最近记录: |