首页 > 语言 > JavaScript > 正文

Vuejs 实现简易 todoList 功能 与 组件实例代码

2024-05-06 15:30:22
字体:
来源:转载
供稿:网友

todoList

结合之前 Vuejs 基础与语法
•使用 v-model 双向绑定 input 输入内容与数据 data
•使用 @click 和 methods 关联事件
•使用 v-for 进行数据循环展示

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>TodoList</title> <script src="./vue.js"></script></head><body> <div id="root">  <div>   <input 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></body></html>

JSbin 预览

todoList 组件拆分

Vuejs 组件相关 详细参考组件基础

全局组件

注册全局组件,并在 HTML 中通过模板调用组件

//注册全局组件  Vue.component('todo-item',{   template: '<li>item</li>'  })  <ul>   <!-- <li v-for="(item,index) of list" :key="index">    {{item}}   </li> -->   <todo-item></todo-item>   <!-- 通过模板使用组件 -->  </ul>

JSbin 预览

局部组件

在注册了局部组件之后,直接通过模板调用是不可以的,必须要在最外层的 Vue 的实例中添加 components: { }进行组件声明。 

//注册局部组件  var TodoItem = {   template: '<li>item</li>'  }  new Vue({   el: "#root",   components: {  //局部组件需要声明的 components    'todo-item': TodoItem   },   data: {    inputValue: '',    list: []   },   methods: {    handleSubmit: function(){     this.list.push(this.inputValue)     this.inputValue = ''    }   }  })

JSbin 预览

即通过局部注册的组件,需要在其他的 Vue 实例中使用该局部组件。必须使用 components 对该局部组件进行注册。
上面的实例中,要在 Vue 实例中使用 TodoItem 这个局部组件,就通过 todo-item 这个标签来使用。当在实例中 注册好了以后,才可以在模板里面使用这个标签。这样就算正确的使用了局部组件。

外部传递参数

给 todo-item 标签添加 :content 属性,值为循环的每一项的内容 "item",

这样就可以吧 content 传递给 todo-item 这个组件

<todo-item v-for="(item,index) of list" :key="index" :content="item"></todo-item>

但是直接将组件改成是不行的

  Vue.component('todo-item',{   template: '<li>{{content}}</li>'  })

需要让组件接收属性,所以要在todo-item组件里面定义props属性,其值为一个数组 'content' 。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选