zoukankan      html  css  js  c++  java
  • Vue父子组件交互方式小结

    sync后缀

    1. 子组件自身事件,更新自身属性,如这里show, 并同时将属性值"同步"给父组件中的data,如这里valueChild
    2. 父组件对data改变, 可以同步给子组件的属性

     1 <template>
     2   <div class="details">
     3     <myComponent :show.sync='valueChild' style="padding: 30px 20px 30px 5px;border:1px solid #ddd;margin-bottom: 10px;">
     4     </myComponent>
     5     <button @click="changeValue">toggle</button>
     6   </div>
     7 </template>
     8 <script>
     9 //组件属性(show)的改变,同步到父组件的data,父组件的data值的改变也可以同步到子组件的属性,即父组件与子组件属性值之间的通信
    10 import Vue from "vue";
    11 Vue.component("myComponent", {
    12   template: `<div v-if="show">
    13                 <p>默认初始值是{{show}},所以是显示的</p>
    14                 <button @click.stop="closeDiv">关闭</button>
    15               </div>`,
    16   props: ["show"],
    17   methods: {
    18     closeDiv() {
    19       this.$emit("update:show", false); //效果是将子组件更新组件内部属性show,并传入新值"false", update是vue 
    20     }
    21   }
    22 });
    23 export default {
    24   data() {
    25     return {
    26       valueChild: true
    27     };
    28   },
    29   methods: {
    30     changeValue() {
    31       this.valueChild = !this.valueChild;
    32     }
    33   }
    34 };
    35 </script>

     vue中emit与on和BUS

    形式1  参考

     Vue.prototype.bus = new Vue(); //vue原型链挂载总线

     this.bus.$emit("change",data); //子组件发送数据

    this.bus.$on("change",function(data){
    
    })

    //子组件接收数据

    形式2

    1 var Event = new Vue();
    2 Event.$emit('msg',this.msg);
    3 Event.$on('msg',function(msg){
    4     //对数据处理
    5 }

    第1行: 相当于又new了一个vue实例,Event中含有vue的全部方法;
    第2行:发送数据,第一个参数是发送数据的名称,接收时还用这个名字接收,第二个参数是这个数据现在的位置;
    第3行~第5行: 接收数据,第一个参数是数据的名字,与发送时的名字对应,第二个参数是一个方法,要对数据的操作

  • 相关阅读:
    Unity3d获取APK签名及公钥的方法
    NGUI屏幕自适应
    转:Firefox中firebug和xpath checker工具的使用
    判断输入的手机号和价格是否合法
    IOS 四种保存数据的方式
    IOS开发控制器之间传值的几种小方法
    AlertView的三种弹窗模式
    多线程之NSThread、NSOperation及GCD
    IOS Key-Value Observing (KVO)
    UILabel的相关属性设置
  • 原文地址:https://www.cnblogs.com/zhuji/p/13182281.html
Copyright © 2011-2022 走看看