使用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中获取iframe的代码
Jan 11 Javascript
javascript setTimeout和setInterval计时的区别详解
Jun 21 Javascript
js截取固定长度的中英文字符的简单实例
Nov 22 Javascript
js/jquery判断浏览器的方法小结
Sep 02 Javascript
使用iojs的jsdom库实现同步系统时间
Apr 20 Javascript
在JS方法中返回多个值的方法汇总
May 20 Javascript
javascript-解决mongoose数据查询的异步操作
Dec 22 Javascript
基于vue2实现上拉加载功能
Nov 28 Javascript
JS实现的汉字与Unicode码相互转化功能分析
May 25 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
Sep 25 Javascript
JS 音频可视化插件Wavesurfer.js的使用教程
Oct 31 Javascript
解决vue2中使用elementUi打包报错的问题
Sep 22 Javascript
详解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
使用php记录用户通过搜索引擎进网站的关键词
2014/02/13 PHP
PHP类的特性实例分析
2016/09/28 PHP
PHP简单实现冒泡排序的方法
2016/12/26 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
2019/03/06 PHP
User Scripts: Video Download by User Scripts
2007/05/14 Javascript
js活用事件触发对象动作
2008/08/10 Javascript
js选取多个或单个元素的实现代码(用class)
2012/08/22 Javascript
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
2013/10/11 Javascript
javascript进行四舍五入方法汇总
2014/12/16 Javascript
js控制TR的显示隐藏
2016/03/04 Javascript
使用jQuery制作基础的Web图片轮播效果
2016/04/22 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
使用JavaScript获取Request中参数的值方法
2016/09/27 Javascript
使用jquery.qrcode.js生成二维码插件
2016/10/17 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
2016/10/24 Javascript
详解handlebars+require基本使用方法
2016/12/21 Javascript
微信小程序搜索组件wxSearch实例详解
2017/06/08 Javascript
微信小程序开发之IOS和Android兼容的问题
2017/09/26 Javascript
layui从数据库中获取复选框的值并默认选中方法
2018/08/15 Javascript
js中的闭包实例展示
2018/11/01 Javascript
Vue源码探究之虚拟节点的实现
2019/04/17 Javascript
原生JavaScript写出Tabs标签页的实例代码
2020/07/20 Javascript
[05:10]2014DOTA2国际邀请赛 通往胜利之匙赛场探秘之旅
2014/07/18 DOTA
python使用fileinput模块实现逐行读取文件的方法
2015/04/29 Python
python操作ie登陆土豆网的方法
2015/05/09 Python
Python实现矩阵加法和乘法的方法分析
2017/12/19 Python
pandas中遍历dataframe的每一个元素的实现
2019/10/23 Python
欧洲最大的拼图游戏商店:JigsawPuzzle.co.uk
2018/07/04 全球购物
UNIX操作系统结构由哪几部分组成
2016/02/17 面试题
税务专业毕业生自荐信
2013/11/10 职场文书
大三预备党员入党思想汇报
2014/01/08 职场文书
公益广告语集锦
2014/03/13 职场文书
教育项目合作协议书格式
2014/10/17 职场文书
一年级数学下册复习计划
2015/01/17 职场文书
文案策划岗位职责
2015/02/11 职场文书
教你怎么用Python处理excel实现自动化办公
2021/04/30 Python