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 相关文章推荐
javascript两段代码,两个小技巧
Feb 04 Javascript
Jquery中$.post和$.ajax的用法小结
Apr 28 Javascript
javascript无刷新评论实现方法
May 13 Javascript
js添加绑定事件的方法
May 15 Javascript
JS实现图片延迟加载并淡入淡出效果的简单方法
Aug 25 Javascript
微信小程序将字符串生成二维码图片的操作方法
Jul 17 Javascript
解决vue-cli单页面手机应用input点击手机端虚拟键盘弹出盖住input问题
Aug 25 Javascript
vue中使用protobuf的过程记录
Oct 26 Javascript
实用的Vue开发技巧
May 30 Javascript
vue 中url 链接左边的小图标更改问题
Dec 30 Javascript
微信小程序报错: thirdScriptError的错误问题
Jun 19 Javascript
小程序自动化测试的示例代码
Aug 11 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生成word文档的三种实现方式
2016/11/14 PHP
JS实现图片翻书效果示例代码
2013/09/09 Javascript
javascript读取xml实现javascript分页
2013/12/13 Javascript
jQuery实现长按按钮触发事件的方法
2015/02/02 Javascript
谈谈Jquery ajax中success和complete有哪些不同点
2015/11/20 Javascript
Javascript技术难点之apply,call与this之间的衔接
2015/12/04 Javascript
jQuery点击其他地方时菜单消失的实现方法
2016/04/22 Javascript
手机端js和html5刮刮卡效果
2020/09/29 Javascript
JS动态修改网页body的背景色实例代码
2017/10/07 Javascript
AnglarJs中的上拉加载实现代码
2018/02/08 Javascript
仿vue-cli搭建属于自己的脚手架的方法步骤
2019/04/17 Javascript
vue 搭建后台系统模块化开发详解
2019/05/01 Javascript
开发中常用的25个JavaScript单行代码(小结)
2019/06/28 Javascript
layui清空,重置表单数据的实例
2019/09/12 Javascript
Vue实现点击当前元素以外的地方隐藏当前元素(实现思路)
2019/12/04 Javascript
浅谈es6中的元编程
2020/12/01 Javascript
jQuery实现本地存储
2020/12/22 jQuery
Python字符串特性及常用字符串方法的简单笔记
2016/01/04 Python
Python 结巴分词实现关键词抽取分析
2017/10/21 Python
浅谈Python NLP入门教程
2017/12/25 Python
Python控制键盘鼠标pynput的详细用法
2019/01/28 Python
python爬虫基础教程:requests库(二)代码实例
2019/04/09 Python
Python 音频生成器的实现示例
2019/12/24 Python
在Keras中实现保存和加载权重及模型结构
2020/06/15 Python
Win10环境中如何实现python2和python3并存
2020/07/20 Python
python中的split、rsplit、splitlines用法说明
2020/10/23 Python
Python paramiko使用方法代码汇总
2020/11/20 Python
MIXIT官网:俄罗斯最大的化妆品公司之一
2020/01/25 全球购物
进修护士自我鉴定
2013/10/14 职场文书
大四毕业生学习总结的自我评价
2013/10/31 职场文书
工程业务员工作职责
2013/12/07 职场文书
区域销售经理职责
2013/12/22 职场文书
连锁超市项目计划书
2014/09/15 职场文书
教师求职自荐信
2015/03/26 职场文书
入党申请书怎么写?
2019/06/21 职场文书
2019单位介绍信怎么写
2019/06/24 职场文书