美文网首页
vue2.0中废弃了events和$dispatch,改用$em

vue2.0中废弃了events和$dispatch,改用$em

作者: 一条正在翻身的咸鱼 | 来源:发表于2019-01-23 09:42 被阅读0次

goods.vue组件:

在methods添加cartAdd函数

监听v-on:cart-add="cartAdd",

购物车组件如果提交了'cart-add'事件就调用这个cartAdd函数;

对应cartcontrol.vue中methods下的addCart()函数里的:

this.$emit('cart-add', event.target);

这句话的意思是提交名为'cart-add'的事件给父组件;

```html

  <cartcontrol

  :food="food"

  v-on:cart-add="cartAdd"

  >

  </cartcontrol>

```

```html

<shopcart

  ref="shopcart"

  :select-foods="selectFoods"

  :delivery-price="seller.deliveryPrice" 

  :min-price="seller.minPrice"

  >

</shopcart>

```

```ecmascript 6

methods: {

 cartAdd (el) {

    // dom元素更新后执行, 因此此处能正确打印出更改之后的值;

   this.$nextTick(() => {

      // 调用shopcart组件的drop()函数

     this.$refs['shopcart'].drop(el);

    });

  }

}

```

cartcontrol.vue组件:

```javascript

addCart(event) {

  if (!event._constructed) {

    return;

  }

  if (!this.food.count) {

    Vue.set(this.food, 'count', 1);

  } else {

      this.food.count++;

  }

  this.$emit('cart-add', event.target);

  //添加这句,提交'cart-add'事情给父组件,第二个是要传递的参数

}

```

shopcart.vue组件:

```javascript

methods: {

    drop(el) {

        console.log(el); // 点击加号看是否输出成功

    }

}

```

子组件向父组件传递过程梳理:

子组件cartcontrol的addCart()里,

用this.$emit('cart-add',event.target)方法获取<添加按钮>,

并把这个DOM元素以'cart-add'名字传递给父组件goods;

父组件goods用v-on:cart-add="cartAdd"监听传来的cart-add事件,

监听到就调用cartAdd()函数处理;

cartAdd()函数里这句this.$refs['shopcart'].drop(el);

调用shopcart.vue组件的drop()函数,看是否打印出当前参数.

---------------------

作者:wangwangwanglichao

来源:CSDN

原文:https://blog.csdn.net/wangwangwanglichao/article/details/80088054

版权声明:本文为博主原创文章,转载请附上博文链接!

相关文章

网友评论

      本文标题:vue2.0中废弃了events和$dispatch,改用$em

      本文链接:https://www.haomeiwen.com/subject/jutjjqtx.html