2018-05-31 组件见传参的坑

好了 终于逃不过要搞组件间参数传递 这是我在学习vue时候非常头疼的一个问题。由于Vue 2.x以后相比较Vue 1.x而言,升级变化除了实现了Virtual-Dom以外,给使用者最大不适就是移除的组件的props的双向绑定功能。
之前在Vue1.x中利用props的twoWay和.sync绑定修饰符就可以实现props的双向绑定功能,但是在Vue2中彻底废弃了此功能,似乎需要双向绑定可以自己来实现。不过人家既然废除了,肯定有其中的道理,想传参就单向通信吧。

先来看个代码片段:


引入组件 然后components里注册一下
//父组件中
<sitelist :site-id="dialogForm.data.site_id" v-on:listenToChildEvent="siteWatch"
                  class="componentItem"></sitelist>
//子组件中
<template>
  <el-form-item label="场地列表">
    <el-select v-model="siteId" placeholder="请选择场地">
      <el-option v-for="(item, index) in sitedata" :key="index" v-bind:label="item.title_cn" v-bind:value="item.site_id"></el-option>
    </el-select>
  </el-form-item>
</template>


<script type="es6">
import {site} from '@/api/general'

export default{
  props: ['siteId'],
  data() {
    return {
//以上通过props接收父组件传过来的siteid 要注意的是 父组件中的写法是 xxx-xxx 加横线分隔 在子组件中接收需要用xxxXxx的驼峰方式接收。

其实也很简单的一个功能 就是把所有能选择的场地都封装一下↓


页面中

当我选择子组件的select时...
wtf?!

找来找去 原来问题出在这里了↓

//子组件中html
<el-select v-model="componentSite" placeholder="请选择场地"> ←就是这个v-model
      <el-option v-for="(item, index) in sitedata" :key="index" v-bind:label="item.title_cn" v-bind:value="item.site_id"></el-option>
    </el-select>
//子组件中js
watch: {
    siteId: function (params) {
      this.componentSite = this.siteId;  //现在需要监听siteId的变化 换成这个componentSite放在v-model里 
    },
    componentSite: function(){
      this.$emit("listenToChildEvent", this.componentSite)
    }
  },

因为需要将父组件传来的值重新赋值 不能直接操作父组件传来的值


页面中

可以看到问题已经得到解决了。

关于作者


  var myproject = {

    nickName  : "remix_huang",

    site : "https://www.jianshu.com/u/717e2ca57b3f"

  }

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 基于Vue的组件库 https://github.com/ElemeFE/element" element 饿了...
    _执着执着再执着阅读 32,882评论 4 230
  • 转载 :OpenDiggawesome-github-vue 是由OpenDigg整理并维护的Vue相关开源项目库...
    果汁密码阅读 23,300评论 8 124
  • 『发红包求监督151天』6点半起床,起床截图,没起来就给下面所有点赞的朋友发红包。想早起的童鞋请留言进群,我们一起...
    阿哲百度九师兄阅读 1,098评论 0 0
  • 我好像荒芜了很久,生活是,内心也是。 我的生活停滞不前,却又一边感慨着时间的流逝。本该是追逐梦想焕发青春光芒的年纪...
    无终_阅读 1,040评论 0 0
  • 感恩爸爸的要求,要求我开车陪他去惠州探望92高龄的舅婆——爸爸的舅妈!我愉快答应了,因为明天我就上班了,今天...
    曾秋萍阅读 1,072评论 0 0