vue2.0父子组件的数据怎么简单的交换?

比如,以前一个叫component的模板里面写上:

props: {
  show: {
    type:Boolean,
    twoWay: true
  }
}

然后父组件使用的时候

<component
:show.sync="XXX.show"></component>

就行了,现在应该怎么做?
用$emit?我用官方的例子虽然实现了以前的功能,但是会报错
图片描述

谢谢

阅读 6.7k
4 个回答

然而10个小时过去了。。。

我自己想了一个办法不报错了,但是总感觉不如1.X来的简单。不过渲染机制不一样了,尤大这样做必然有他的道理的,不然父组件重新渲染会影响到子组件的状态。

没错,还是emit,之前我没理解对

在关闭子组件的时候通知父组件改变值:

  methods: {
    closeAside: function() {
      this.$emit('closeAside')
    }
  }
  

最后父组件监听closeAside:

<z-button
:text="'Left'"
@click.native="asideLeft.show = true">
</z-button>
<z-aside
:show="asideLeft.show"
:title="'标题'"
:type="'left'"
v-on:closeAside="asideLeft.show = false">

这样就可以无限的打开关闭,跟1.0实现的结果一样了

可以使用值传递啊,在父组件定义这个数据,子组件获取,如果要在子组件上改变值,那么就在父组件定义这个方法,同样传递下来,子组件调用即可。

使用vuex,组件之间数据传输很方便的,爽得遭不住.

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