vueJS $emit 传递数据 $on接受到但无法使用的问题

在学习vue时,遇到一个问题:
子组件通过$emit来向父组件传递数据(array),在父组件的监听回调函数中也取到了这个数组,但是无法赋值给父组件的data对象里,为什么呢?

子组件

<button type="button" v-on:click.self="submit">确定</button>
//js
export default {
            props:["titleName","id","order"],
            methods: {
                submit:function(){
                this.$emit("ok",[this.titleName,this.id,this.order]) // 向父级传递["xiha",123,3]。        
                }
            }
    }

父组件

<index-popup v-on:ok="submit"></index-popup>
//js
export default {
        data() {
                return {
                titleName:"hahaha",
                id:132155,
                time:"1000",
                order:1,
                seen:false,

                }
            },        
            components: {
            'index-popup': IndexPopup
        },
            methods: {                
            submit:function(arr){
                console.log(arr)   // 父级也接受到了这个数组 ["xiha",123,3]
                this.titleName=arr[0]; // 无效
                this.id=arr[1];        // 无效
                this.order=arr[2];    // 无效
            }
            }
    }
阅读 8.2k
3 个回答

亲测是有效的,可能你用的vue的扩展工具查看的是无效的,但是它确实生效了,应该是扩展工具没即时更新,你在扩展工具里面点点其他组件切换一下应该就生效了

console.log(this)你会找到原因的


submit:function(arr){
    console.log(arr)   // 父级也接受到了这个数组 ["xiha",123,3]
    
    console.log(this);    //执行前
    this.titleName=arr[0];
    this.id=arr[1];
    this.order=arr[2];
    console.log(this)    //执行后,就看到效果了
}

我刚测试是可以的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题