在两个实例vuejs之间进行通信

时间:2017-11-05 10:54:56

标签: javascript vue.js vuejs2

我有2个独立的vue js实例。我需要将值从一个实例传递给另一个实例。我可以通过,但不能在模型中绑定该值。这就是我如何将信息从一个实例传递到另一个实例

var holiday = new Vue({});

从一个实例中发出值

holiday.$emit('holiday_id',{
    holiday_id : response.data.id
});

每当安装第二个实例时接收假日ID。之后,不能在模型中绑定该值

mounted() {
    holiday.$on('holiday_id', function(holiday){
        this.temp_holiday_id = holiday.holiday_id;
    });
}

我做错了什么,任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

您在事件侦听器的回调中使用常规函数。因此this未指向vue实例,这就是您无法访问和修改this.temp_holiday_id的原因 在您的数据属性

因此,请使用箭头函数,以便this以词法方式绑定

mounted() {
    holiday.$on('holiday_id', (holiday) => {
        this.temp_holiday_id = holiday.holiday_id;
    });
} 

或在挂载的挂钩中设置var self = this,以便回调在self上有一个指向vue实例的闭包

mounted() {
    var self = this;
    holiday.$on('holiday_id', function(holiday){
        self.temp_holiday_id = holiday.holiday_id;
    });
} 
相关问题