使用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 相关文章推荐
JS关键字变色实现思路及代码
Feb 21 Javascript
Jquery的hide及toggle方法让超链接慢慢消失
Sep 06 Javascript
jquery自定义表格样式
Nov 23 Javascript
js点击文本框弹出可选择的checkbox复选框
Feb 03 Javascript
javascript瀑布流式图片懒加载实例解析与优化
Feb 23 Javascript
AngularJS优雅的自定义指令
Jul 01 Javascript
JavaScript随机生成颜色的方法
Oct 15 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
Mar 20 Javascript
基于angular6.0实现的一个组件懒加载功能示例
Apr 12 Javascript
vue-cli 使用vue-bus来全局控制的实例讲解
Sep 15 Javascript
vue实现自定义多选按钮
Jul 16 Javascript
vscode中Vue别名路径提示的实现
Jul 31 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
在apache下限制每个虚拟主机的并发数!!!!
2006/10/09 PHP
PHP中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
基于php无限分类的深入理解
2013/06/02 PHP
解析php中var_dump,var_export,print_r三个函数的区别
2013/06/21 PHP
php利用curl抓取新浪微博内容示例
2014/04/27 PHP
PHP base64编码后解码乱码的解决办法
2014/06/19 PHP
php实现TCP端口检测的方法
2015/04/01 PHP
php通过curl模拟登陆DZ论坛
2015/05/11 PHP
php实现可逆加密的方法
2015/08/11 PHP
php实现微信公众号无限群发
2015/10/11 PHP
PHP 序列化和反序列化函数实例详解
2020/07/18 PHP
JavaScript 高效运行代码分析
2010/03/18 Javascript
10个实用的脚本代码工具
2010/05/04 Javascript
JS 实现Table相同行的单元格自动合并示例代码
2013/08/27 Javascript
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
2013/12/05 Javascript
escape编码与unescape解码汉字出现乱码的解决方法
2014/07/02 Javascript
javascript框架设计之类工厂
2015/06/23 Javascript
jQuery实现输入框下拉列表树插件特效代码分享
2015/08/27 Javascript
jQuery实现鼠标经过像翻页和描点链接效果
2016/08/08 Javascript
Node.js中看JavaScript的引用
2017/04/22 Javascript
vue开发调试神器vue-devtools使用详解
2017/07/13 Javascript
javascript 通过键名获取键盘的keyCode方法
2017/12/31 Javascript
微信小程序实现发红包功能
2018/07/11 Javascript
vue中的双向数据绑定原理与常见操作技巧详解
2020/03/16 Javascript
[03:02]生活中的Dendi之野外度假篇
2016/08/09 DOTA
[00:12]DAC2018 天才少年转战三号位,他的SOLO是否仍如昔日般强大?
2018/04/06 DOTA
python函数的5种参数详解
2017/02/24 Python
Python搜索引擎实现原理和方法
2017/11/27 Python
Python进阶之尾递归的用法实例
2018/01/31 Python
解决python3中解压zip文件是文件名乱码的问题
2018/03/22 Python
python是怎么被发明的
2020/06/15 Python
Java中的基本数据类型所占存储空间大小固定的吗
2012/02/15 面试题
写好自荐信需做到的5要点
2014/03/07 职场文书
护理目标管理责任书
2014/07/25 职场文书
2014年党员个人工作总结
2014/12/02 职场文书
2015年中学体育教师工作总结
2015/10/23 职场文书