使用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.uploadify 上传文件插件的使用详解 for ASP.NET
Jan 22 Javascript
jQuery Tools tab使用介绍
Jul 14 Javascript
Firefox下无法正常显示年份的解决方法
Sep 04 Javascript
删除Javascript Object中间的key
Nov 18 Javascript
果断收藏9个Javascript代码高亮脚本
Jan 06 Javascript
jquery实现全选和全不选功能效果的实现代码【推荐】
May 05 Javascript
JS简单实现DIV相对于浏览器固定位置不变的方法
Jun 17 Javascript
纯JS前端实现分页代码
Jun 21 Javascript
使用vue框架 Ajax获取数据列表并用BootStrap显示出来
Apr 24 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
Apr 24 Javascript
JavaScript DOM元素常见操作详解【添加、删除、修改等】
May 09 Javascript
JavaScript继承与聚合实例详解
Jan 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.ini中的php-5.2.0配置指令详解
2008/03/27 PHP
PHP中文分词 自动获取关键词介绍
2012/11/13 PHP
ThinkPHP模板IF标签用法详解
2014/07/01 PHP
php字符串函数学习之strstr()
2015/03/27 PHP
基于PHP技术开发客服工单系统
2016/01/06 PHP
php中的异常和错误浅析
2017/05/03 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
laravel5.6中的外键约束示例
2019/10/23 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
2019/10/25 PHP
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
使用script的src实现跨域和类似ajax效果
2014/11/10 Javascript
利用js实现禁止复制文本信息
2015/06/03 Javascript
谈谈JavaScript类型系统之Math
2016/01/06 Javascript
javascript类型系统 Window对象学习笔记
2016/01/07 Javascript
javascript cookie用法基础教程(概念,设置,读取及删除)
2016/09/20 Javascript
JavaScript prototype属性详解
2016/10/25 Javascript
关于vuex的学习实践笔记
2017/04/05 Javascript
微信小程序组件之srcoll-view的详解
2017/10/19 Javascript
Angular4的输入属性与输出属性实例详解
2017/11/29 Javascript
vue项目中的webpack-dev-sever配置方法
2017/12/14 Javascript
Three.js 再探 - 写一个微信跳一跳极简版游戏
2018/01/04 Javascript
react实现移动端下拉菜单的示例代码
2020/01/16 Javascript
prettier自动格式化去换行的实现代码
2020/08/25 Javascript
python opencv人脸检测提取及保存方法
2018/08/03 Python
Python爬虫框架scrapy实现的文件下载功能示例
2018/08/04 Python
Python运行不显示DOS窗口的解决方法
2018/10/22 Python
nginx+uwsgi+django环境搭建的方法步骤
2019/11/25 Python
Python 实现网课实时监控自动签到、打卡功能
2020/03/12 Python
DOM和JQuery对象有什么区别
2016/11/11 面试题
生产管理的三大手法
2013/11/11 职场文书
教师党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
语文复习计划
2015/01/19 职场文书
辞职书格式样本
2015/02/26 职场文书
2015年数学教研工作总结
2015/07/22 职场文书
2016年“我们的节日·清明节”活动总结
2016/04/01 职场文书
vue如何在data中引入图片的正确路径
2022/06/05 Vue.js