观看Vue标签输入变化

时间:2019-07-06 19:01:44

标签: vue.js watch

我的应用程序中有vue-tags-input组件:

<vue-tags-input
    placeholder="np. x:10,y:10"
    v-model="tag"
    :tags="tags"
    :validation="validation"
    @tags-changed="allTags => tagsChanged(allTags)"
/>

我关注了文档,并在tags-changed上执行了自己的函数,该函数映射了对象数组:

tagsChanged(tags) {
    this.mapsData.waypoints = tags.map(obj => { return obj.text });
    console.log(this.mapsData.waypoints);
}

尽管在控制台中我可以看到this.mapsData.waypoints包含正确的值,但我无法在watch钩子中看到此更改:

watch: {
    'mapsData': {
        handler: function (val) {
            console.log(val); //never console
        },
        deep: true
    }
},

此console.log从未实际控制台任何内容。为什么?我需要该手表将此自定义事件发送到我应用中的其他位置。我只能从tagsChanged方法发送,但是我的mapsData也包含其他值,我想从观察者发送所有消息。

1 个答案:

答案 0 :(得分:1)

出于某种原因,Vue无法检测到此更改,因此我需要通过以下方式自行触发:

Vue.set(object, propertyName, value)