码迷,mamicode.com
首页 > 其他好文 > 详细

vue~父组件与子组件的交互

时间:2020-06-26 16:08:32      阅读:47      评论:0      收藏:0      [点我收藏+]

标签:交互   html   部分   父页面   直接   rom   name   default   rod   

我们在进行vue开发时会将公共的部分进行抽象,然后生成一个独立的组件,这个组件可以被其它页面引用,如果希望有交互的动作就设计到了值的传递,或者方法的回调等问题,这一次我们主要来说一下父组件和子组件的交互。

值的传递

子组件,通过定义了prods,然后可以实现从父组件向子组件的传递:

  <template>
  <div id="app">
    这是自定义的组件:{{myMessage}}
    <button @click="childClick">调用父组件的方法</button>
  </div>
</template>
<script>
export default {
  name: "testComponent",
  props: ["myMessage"],
  data() {
    return {
      message: "hello world",
      myNum: 37,
      myStr: "lind"
    };
  },
  methods: {
    childClick() {
       console.log("调用childClick");
      this.$emit("abcClick", this.myNum, this.myStr);
    }
  }
};
</script>

父组件/页面,直接为这个prods赋值即可,注意如果JS里props名称是小驼峰,在html需要用中线来代替

    <testComponent my-message="hello"></testComponent> 
<script>
import testComponent from "@/components/testComponent";
export default {
  name: "test-grammer",
  props: {
    //接收父组件传递过来的参数
  },
  components: {
    testComponent
  }
}
</script>

方法的传递/回调

在父页面绑定子组件的方法,然后子组件在某个时机去触,这就形成了在子组件里调用父组件的方法,使用了$emit来实现

 <button @click="childClick">调用父组件的方法</button>
<script>
export default {
  name: "testComponent",
  methods: {
    childClick() {
      this.$emit("abcClick", this.myNum, this.myStr);
    }
  }
};
</script>

在父页面中去绑定这个abcClick事件就可以了,当在子组件调用这个childClick事件时,绑定了abcClick的方法将会被一起回调

<testComponent  @abcClick="sayHello"></testComponent>
<script>
import testComponent from "@/components/testComponent";
export default {
  name: "test-grammer",
  methods: {
    sayHello(Num, Str) {
      console.log("hello world~~" + Num + Str);
    }
  },
};
</script>

vue~父组件与子组件的交互

标签:交互   html   部分   父页面   直接   rom   name   default   rod   

原文地址:https://www.cnblogs.com/lori/p/13195127.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!