使用Vue父子组件通信实现todolist的功能示例代码


Posted in Javascript onApril 11, 2019

先上代码

<body>
  <div id="root">
    <div>
      <input v-model="inputValue" />
      <button @click="handleClick">submit</button>
    </div>
      <ul>
        <todolist v-for="(item,index) of list"
         :key="index" 
         :content="item"
         :index="index"
         @delete="handle"
        ></todolist>
      </ul>
  </div>
  <script>

    Vue.component("todolist",{
      props: ['content','index'],
      template: '<li @click="handleDelete">{{content}}</li>',
      methods: {
        handleDelete:function(){
          this.$emit('delete',this.index)
        }
      }
      })

    new Vue({
      el:"#root",
      data: {
        inputValue:'',
        list:[]
      },
      methods: {
        handleClick:function(){
          this.list.push(this.inputValue)
          this.inputValue=''
        },
        handle:function(index){
          this.list.splice(index,1)
        }
      }
    })
  </script>
</body>

创建todolist的基本结构

<div id="root">
    <div>
      <input v-model="inputValue" />
      <button @click="handleClick">submit</button>
    </div>
      <ul>
        <todolist v-for="(item,index) of list"
         :key="index" 
         :content="item"
         :index="index"
         @delete="handle"
        ></todolist>
      </ul>
  </div>

在这里我们创建了一个todolist标签作为父组件,让它在里面循环遍历list作为我们的输出,同时定义了一个delete的监听事件。

接下来在script标签里定义子组件

Vue.component("todolist",{
      props: ['content','index'],
      template: '<li @click="handleDelete">{{content}}</li>',
      methods: {
        handleDelete:function(){
          this.$emit('delete',this.index)
        }
      }
      })

定义了一个全局类型的子组件,子组件的props选项能够接收来自父组件数据,props只能单向传递,即只能通过父组件向子组件传递,这里将上面父组件的content和index传递下来。

将li标签作为子组件的模板,添加监听事件handleDelete用与点击li标签进行删除。

在下面定义子组件的handleDelete方法,用this.$emit向父组件实现通信,这里传入了一个delete的event,参数是index,父组件通过@delete监听并接收参数

接下来是Vue实例

new Vue({
      el:"#root",
      data: {
        inputValue:'',
        list:[]
      },
      methods: {
        handleClick:function(){
          this.list.push(this.inputValue)
          this.inputValue=''
        },
        handle:function(index){
          this.list.splice(index,1)
        }
      }
    })

handleClick方法实现每次点击submit按钮时向list里添加值,在每次添加之后将输入框清空。

而handle方法则是点击删除li标签,这里通过接受传入的index参数来判断点击的是哪一个li

这是删除前:

使用Vue父子组件通信实现todolist的功能示例代码

这是删除后:

使用Vue父子组件通信实现todolist的功能示例代码

总结:

通过点击子组件的li实现向外触发一个delete事件,而父组件监听了子组件的delete事件,执行父组件的handle方法,从而删除掉对应index的列表项,todolist中的list对应项也会被删除掉。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
用jquery写的一个万年历(自写)
Jan 20 Javascript
jQuery元素的隐藏与显示实例
Jan 20 Javascript
Jquery揭秘系列:ajax原生js实现详解(推荐)
Jun 08 Javascript
javascript中的面向对象
Mar 30 Javascript
vue.js之vue-cli脚手架的搭建详解
May 05 Javascript
详解Vue单元测试case写法
May 24 Javascript
Vue 表情包输入组件的实现代码
Jan 21 Javascript
微信小程序图表插件wx-charts用法实例详解
May 20 Javascript
javascript面向对象三大特征之多态实例详解
Jul 24 Javascript
vue路由跳转传递参数的方式总结
May 10 Javascript
vue实现登录拦截
Jun 29 Javascript
如何用vue实现网页截图你知道吗
Nov 17 Vue.js
详解jQuery设置内容和属性
Apr 11 #jQuery
js作用域和作用域链及预解析
Apr 11 #Javascript
关于js陀螺仪的理解分析
Apr 11 #Javascript
angular 表单验证器验证的同时限制输入的实现
Apr 11 #Javascript
angular 实现同步验证器跨字段验证的方法
Apr 11 #Javascript
vue实现新闻展示页的步骤详解
Apr 11 #Javascript
记一次用vue做的活动页的方法步骤
Apr 11 #Javascript
You might like
修改Zend引擎实现PHP源码加密的原理及实践
2008/04/14 PHP
php遍历文件夹下的所有文件和子文件夹示例
2014/03/20 PHP
PHP实现文件下载断点续传详解
2014/10/15 PHP
php中HTTP_REFERER函数用法实例
2014/11/21 PHP
PHP中$this和$that指针使用实例
2015/01/06 PHP
php根据用户语言跳转相应网页
2015/11/04 PHP
PHP连接MSSQL方法汇总
2016/02/05 PHP
PHP读取XML格式文件的方法总结
2017/02/27 PHP
学习YUI.Ext 第四天--对话框Dialog的使用
2007/03/10 Javascript
js chrome浏览器判断代码
2010/03/28 Javascript
Javascript公共脚本库系列(一): 弹出层脚本
2011/02/24 Javascript
js实现翻页后保持checkbox选中状态的实现方法
2012/11/03 Javascript
一个Action如何调用两个不同的方法
2014/05/22 Javascript
Jquery跨域获得Json的简单实例
2016/05/18 Javascript
JavaScript中call和apply方法的区别实例分析
2018/08/03 Javascript
微信小程序实现日历效果
2018/12/28 Javascript
Vue组件的使用及个人理解与介绍
2019/02/09 Javascript
jQuery中DOM常见操作实例小结
2019/08/01 jQuery
在vue中使用防抖和节流,防止重复点击或重复上拉加载实例
2019/11/13 Javascript
python cx_Oracle的基础使用方法(连接和增删改查)
2017/11/19 Python
Python简单实现查找一个字符串中最长不重复子串的方法
2018/03/26 Python
python调用OpenCV实现人脸识别功能
2018/05/25 Python
解决Python3用PIL的ImageFont输出中文乱码的问题
2019/08/22 Python
Python操作Sonqube API获取检测结果并打印过程解析
2019/11/27 Python
Python压缩模块zipfile实现原理及用法解析
2020/08/14 Python
python空元组在all中返回结果详解
2020/12/15 Python
女性时尚网购:Chic Me
2019/07/30 全球购物
2014小学植树节活动总结
2014/03/10 职场文书
股东协议书范本
2014/04/14 职场文书
说明书范文
2014/05/07 职场文书
支部鉴定材料
2014/06/02 职场文书
股东出资证明书范例
2014/10/04 职场文书
2014光棍节大学生联谊活动方案
2014/10/10 职场文书
2015年专项整治工作总结
2015/04/03 职场文书
郭明义观后感
2015/06/08 职场文书
2015年电气技术员工作总结
2015/07/24 职场文书