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 相关文章推荐
关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦
Aug 28 Javascript
用jquery实现等比例缩放图片效果插件
Jul 24 Javascript
node.js中的favicon.ico请求问题处理
Dec 15 Javascript
详解Bootstrap按钮
Jan 04 Javascript
获取jqGrid中选择的行的数据
Nov 30 Javascript
jQuery实现级联下拉框实战(5)
Feb 08 Javascript
Vue.js render方法使用详解
Apr 05 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
Sep 07 jQuery
JS数组去重的6种方法完整实例
Dec 08 Javascript
微信小程序使用map组件实现检索(定位位置)周边的POI功能示例
Jan 23 Javascript
微信小程序实现炫酷的弹出式菜单特效
Jan 28 Javascript
详解Vue中的Props与Data细微差别
Mar 02 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中3种生成XML文件方法的速度效率比较
2012/10/06 PHP
PHP生成及获取JSON文件的方法
2016/08/23 PHP
php+ajax无刷新上传图片的实现方法
2016/12/06 PHP
PHP如何读取由JavaScript设置的Cookie
2017/03/22 PHP
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
jQuery中end()方法用法实例
2015/01/08 Javascript
JavaScript将当前时间转换成UTC标准时间的方法
2015/04/06 Javascript
AngularJS学习笔记之ng-options指令
2015/06/16 Javascript
javascript实现数组内值索引随机化及创建随机数组的方法
2015/08/10 Javascript
javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
2015/11/13 Javascript
js实现下拉列表选中某个值的方法(3种方法)
2015/12/17 Javascript
JavaScript实现简洁的俄罗斯方块完整实例
2016/03/01 Javascript
javascript小数精度丢失的完美解决方法
2016/05/31 Javascript
AngularJs Forms详解及简单示例
2016/09/01 Javascript
解析利用javascript如何判断一个数为素数
2016/12/08 Javascript
zTree树形插件异步加载方法详解
2017/06/14 Javascript
js+html5生成自动排列对话框实例
2017/10/09 Javascript
Node.js Buffer模块功能及常用方法实例分析
2019/01/05 Javascript
Javascript实现单选框效果
2020/12/09 Javascript
element-ui 弹窗组件封装的步骤
2021/01/22 Javascript
编程语言Python的发展史
2014/09/26 Python
在Python的Flask框架中实现全文搜索功能
2015/04/20 Python
Python中的异常处理相关语句基础学习笔记
2016/07/11 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
2018/01/15 Python
centos 安装Python3 及对应的pip教程详解
2019/06/28 Python
python创建学生管理系统
2019/11/22 Python
Python3 shutil(高级文件操作模块)实例用法总结
2020/02/19 Python
Python如何读取、写入JSON数据
2020/07/28 Python
Python JSON常用编解码方法代码实例
2020/09/05 Python
关于django python manage.py startapp 应用名出错异常原因解析
2020/12/15 Python
python实现文件+参数发送request的实例代码
2021/01/05 Python
可打印的优惠券、杂货和优惠券代码:Coupons.com
2018/06/12 全球购物
Reebok官方旗舰店:美国知名健身品牌锐步
2019/01/07 全球购物
暖通工程师岗位职责
2014/06/12 职场文书
保险公司反洗钱宣传活动总结
2015/05/08 职场文书
pytorch中的model.eval()和BN层的使用
2021/05/22 Python