Vue 组件父子组件传值实例

大家都知道,vue组件是数据驱动的一个前端框架。在开发中我们避免不了进行父子传值问题。下面举例说明:

<!DOCTYPE html>

<html>

  <head>

    <meta charset="utf-8">

    <meta name="viewport" content="width=device-width,initial-scale=1.0">

    <title>vue-study</title>

    <script src="vue.js"></script>

  </head>

  <body>

      <div id="sm">

           <input type="text" v-model="invalue"/>

           <button v-on:click="btn">提交</button>

          <ul>

             <!-- <li v-for="item in list">{{item}}</li>-->

             <my-item v-bind:content="item" 

             v-for="(item,index) in list"

             v-bind:index="index"

             @delete="deleteHandle"

             ></my-item>

          </ul>

      </div>

  </body>

  <script>

       //声明局部组件

     var myItem ={

         props:['content','index'],

         //加入点击事件

         template:"<li @click='handleClick'>{{content}}</li>",

         methods:{

            handleClick:function(){               

                //当点击此事件时删除子列表

                this.$emit('delete',this.index);

            }

         }

     }

      var vue = new Vue({

          el: '#sm',

          components:{

            myItem:myItem

          },

          data: {

              content:"你好啊",

              list:[],

              invalue:''

          },

          methods:{

            btn:function(){

                this.list.push(this.invalue);

                this.invalue=''

            },

            deleteHandle : function(index){

                //删除子标签

                //this.list=[]

                //点击某个下标就删除哪条数据

                this.list.splice(index,1);

            }

          }

      });

简单说明:

页面在输入框填写数据,然后生成列表标签,我们点击提交进行列表行新增,点击子列表项删除该列表数据。这里有一个重点就是父组件传值子组件,子组件触发父组件事件问题。

1、父组件可以使用 props 把数据传给子组件。
2、子组件可以使用 $emit 触发父组件的自定义事件。

vm.$emit( event, arg ) //触发当前实例上的事件。

关键点:如果父组件传值子组件,那么需要使用props进行接收,关键代码:

 v-bind:content="item"   v-bind:index="index" 在父组件中绑定的数据,那么声明我们子组件时需要props:['content','index'],进行接收。

如果点击列表时触发父组件事件,首先在生成标签中绑定事件: template:"<li @click='handleClick'>{{content}}</li>", 然后编写该事件:

 handleClick:function(){               

                //当点击此事件时删除子列表

                this.$emit('delete',this.index);

            }

通过$emit来触发父组件事件,父组件绑定事件 @delete="deleteHandle   编写该事件:

 deleteHandle : function(index){

                //删除子标签

                //this.list=[]

                //点击某个下标就删除哪条数据

                this.list.splice(index,1);

            }

是不是很明白了。。。。。。。。。。。。。。。。。。。。。。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值