Vue中父子组件通讯之todolist组件功能开发


Posted in Javascript onMay 21, 2018

一、todolist功能开发

Vue中父子组件通讯之todolist组件功能开发

<div id="root">
  <div>
   <input type="text" v-model="inputValue">
   <button @click="handleSubmit">提交</button>
  </div>
  <ul>
   <li v-for="(item, index ) of list" :key="index">{{item}} </li>
  </ul>
 </div>
 <script>
 new Vue({
  el:"#root",
  data:{
   inputValue:'',
   list:[]
  },
  methods:{
   handleSubmit:function(){
    this.list.push(this.inputValue);
    this.inputValue='';
   }
  }
 })
 </script>

二、todolist组件拆分

定义组件,组件和组件之间通讯

1、全局组件

<div id="root">
  <div>
   <input type="text" v-model="inputValue">
   <button @click="handleSubmit">提交</button>
  </div>
  <ul>
   <todo-item></todo-item>
  </ul>
 </div>
 <script>
 Vue.component('todo-item',{
  template:'<li>item</li>'
 })
...

2、局部组件

要注册,否则会报错:

vue.js:597 [Vue warn]: Unknown custom element: <todo-item> - did you register the component correctly? For recursive components, make sure to provide the "name" option.

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>Document</title>
 <script src="./vue.js"></script>
</head>
<body>
 <div id="root">
  <div>
   <input type="text" v-model="inputValue">
   <button @click="handleSubmit">提交</button>
  </div>
  <ul>
   <todo-item></todo-item>
  </ul>
 </div>
 <script>
 //全局组件
 // Vue.component('todo-item',{
 //  template:'<li>item</li>'
 // })

 var TodoItem={
  template:'<li>item</li>'
 }
 new Vue({
  el:"#root",
  components:{
   'todo-item':TodoItem
  },
  data:{
   inputValue:'',
   list:[]
  },
  methods:{
   handleSubmit:function(){
    this.list.push(this.inputValue);
    this.inputValue='';
   }
  }
 })
 </script>
</body>
</html>

3、组件传值

父组件向子组件传值是通过属性的形式。

<div id="root">
  <div>
   <input type="text" v-model="inputValue">
   <button @click="handleSubmit">提交</button>
  </div>
  <ul>
   <todo-item 
    v-for="(item ,index) of list"
    :key="index"
    :content="item"
   ></todo-item>
  </ul>
 </div>
 <script>
 Vue.component('todo-item',{
  props: ['content'], //接收从外部传递进来的content属性
  template:'<li>{{content}}</li>'
 })
 new Vue({
  el:"#root",
  data:{
   inputValue:'',
   list:[]
  },
  methods:{
   handleSubmit:function(){
    this.list.push(this.inputValue);
    this.inputValue='';
   }
  }
 })
 </script>

三、组件与实例的关系

new Vue()实例

Vue.component是组件

每一个Vue组件又是一个Vue的实例。

任何一个vue项目都是由千千万万个vue实例组成的。

每个vue实例就是一个组件,每个组件也是vue的实例。

四、实现todolist的删除功能

子组件通过发布订阅模式通知父组件。

<div id="root">
  <div>
   <input type="text" v-model="inputValue">
   <button @click="handleSubmit">提交</button>
  </div>
  <ul>
   <todo-item 
    v-for="(item ,index) of list"
    :key="index"
    :content="item"
    :index="index"
    @delete='handleDelete'
   ></todo-item>
  </ul>
 </div>
 <script>
 Vue.component('todo-item',{
  props: ['content','index'], //接收从外部传递进来的content属性
  template:'<li @click="handleDeleteItem">{{content}}</li>',
  methods:{
   handleDeleteItem:function(){
    this.$emit('delete',this.index);
   }
  }
 })
 new Vue({
  el:"#root",
  data:{
   inputValue:'',
   list:[]
  },
  methods:{
   handleSubmit:function(){
    this.list.push(this.inputValue);
    this.inputValue='';
   },
   handleDelete:function(index){
    this.list.splice(index,1);
   }
  }
 })
 </script>

总结

以上所述是小编给大家介绍的Vue中父子组件通讯之todolist组件功能开发,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
prototype.js的Ajax对象
Sep 23 Javascript
JS高级拖动技术 setCapture,releaseCapture
Jul 31 Javascript
jquery实现页面百叶窗走马灯式翻滚显示效果的方法
Mar 12 Javascript
DOM操作一些常用的属性汇总
Mar 13 Javascript
jquery实现简单实用的打分程序实例
Jul 23 Javascript
JQuery点击事件回到页面顶部效果的实现代码
May 24 Javascript
Angular 应用技巧总结
Sep 14 Javascript
vue 组件的封装之基于axios的ajax请求方法
Aug 11 Javascript
vue2.0 路由模式mode=&quot;history&quot;的作用
Oct 18 Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
Jan 20 Javascript
JS实现手写 forEach算法示例
Apr 29 Javascript
nestjs中异常过滤器Exceptionfilter的具体使用
Feb 07 Javascript
Vue+Jwt+SpringBoot+Ldap完成登录认证的示例代码
May 21 #Javascript
纯JS实现可用于页码更换的飞页特效示例
May 21 #Javascript
JS实现的文件拖拽上传功能示例
May 21 #Javascript
以v-model与promise两种方式实现vue弹窗组件
May 21 #Javascript
Vue二次封装axios为插件使用详解
May 21 #Javascript
详解vue的diff算法原理
May 20 #Javascript
详解使用vue-admin-template的优化历程
May 20 #Javascript
You might like
php中动态调用函数的方法
2015/03/16 PHP
php编写简单的文章发布程序
2015/06/18 PHP
PHP编程中的Session阻塞问题与解决方法分析
2017/08/07 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
封装了一个js图片轮换效果的函数
2011/09/28 Javascript
用jquery统计子菜单的条数示例代码
2013/10/18 Javascript
jQuery实现字符串按指定长度加入特定内容的方法
2015/03/11 Javascript
详解Node.js如何开发命令行工具
2016/08/14 Javascript
Nodejs下用submit提交表单提示cannot post错误的解决方法
2016/11/21 NodeJs
BootStrap 图标icon符号图标glyphicons不正常显示的快速解决办法
2016/12/08 Javascript
JS 实现随机验证码功能
2017/02/15 Javascript
微信小程序 聊天室简单实现
2017/04/19 Javascript
ReactNative 之FlatList使用及踩坑封装总结
2017/11/29 Javascript
微信小程序如何像vue一样在动态绑定类名
2018/04/17 Javascript
5分钟学会Vue动画效果(小结)
2018/07/21 Javascript
JavaScript实现数组全排列、去重及求最大值算法示例
2018/07/30 Javascript
element-ui table span-method(行合并)的实现代码
2018/12/20 Javascript
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
layui table去掉右侧滑动条的实现方法
2019/09/05 Javascript
Python标准模块--ContextManager上下文管理器的具体用法
2017/11/27 Python
Python程序退出方式小结
2017/12/09 Python
Python数据分析之双色球中蓝红球分析统计示例
2018/02/03 Python
django解决跨域请求的问题详解
2019/01/20 Python
python三大神器之fabric使用教程
2019/06/10 Python
tensorflow 大于某个值为1,小于为0的实例
2020/06/30 Python
python 贪心算法的实现
2020/09/18 Python
Python排序函数的使用方法详解
2020/12/11 Python
HTML5新增加标签和功能概述
2016/09/05 HTML / CSS
elf彩妆英国官网:e.l.f. Cosmetics英国(美国平价彩妆品牌)
2017/11/02 全球购物
阿巴庭院:Abba Patio
2019/06/18 全球购物
2015年宣传工作总结
2015/04/08 职场文书
面试复试通知单
2015/04/24 职场文书
普通员工辞职信范文
2015/05/12 职场文书
电影建国大业观后感
2015/06/01 职场文书
java实现对Hadoop的操作
2021/07/01 Java/Android
聊聊配置 Nginx 访问与错误日志的问题
2022/05/25 Servers