Vue组件之间传值

接收和发送的方法都是在子组建模板标签内写
比如:

1、父组件向子组件传值:

//先声明一个父组件

var parent = {
  template: "

我是局部父组件{{pMsg}}

",//父组件通过子组件标签绑定:parentMsg='需要传递的数据' data() { return { pMsg: 33 }; }, components: { Child: child } }; //再声明一个子组件(注意实际声明位置是在父组件之前,为了演示方便写在父组件之后) var child = { template: "

我是局部子组件{{parentMsg}}

", props:['parentMsg'], //子组件标签内的数据通过props从父组件接收数据 data() { return { cMsg: 34 }; } }; //最后,把父组件放到根元素内(每个组件必须只有一个根元素) export default { name: "App", data: () => { return {}; }, components: { Parent: parent } };

2、子组件向父组件传值:

  • 子组件通过事件传递,父组件通过事件接收
    • 子组件:this.$emit('父组件接收的事件方法名',传递的数据)
  • 流程:
    • 子组件把$emit绑定到事件(click)上 => 点击子组件=> 父组件内的子组件模板进行接收(注意此处接收依然是子模板,与父模板无关)
//子组件:

var child = {
  template: "",
  data() {
    return {
      cMsg: 34
    };
  },
  methods: {
    emitToParent:function() {
      this.$emit("child-event", "我是子组件传上来的数据");
    }
  }
};

//父组件:

var parent = {
  template:
    "
我是局部父组件{{pMsg}}
", //注意此时接收还是在child模板内接收 data() { return { pMsg: 3 }; }, components: { Child: child }, methods: { getFromChild:function(data) { this.pMsg = data } } };

你可能感兴趣的:(Vue组件之间传值)