Vuejs如何实现简易todoList功能

这篇文章主要介绍Vuejs如何实现简易todoList功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

成都创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都做网站、成都网站设计、成都外贸网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的海港网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

todoList

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




 
 TodoList
 


 
  
       提交   
  
            {{item}}       
 
 

JSbin 预览

todoList 组件拆分

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

全局组件

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

//注册全局组件
  Vue.component('todo-item',{
   template: '
  • item
  • '   })   
                   

    JSbin 预览

    局部组件

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

    //注册局部组件
      var TodoItem = {
       template: '
  • item
  • '   }   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 这个组件

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

      Vue.component('todo-item',{
       template: '
  • {{content}}
  • '   })

    需要让组件接收属性,所以要在todo-item组件里面定义props属性,其值为一个数组 'content' 。
    其含义是,该组件接收从外部传递的进来的名字叫做 content 的属性

      Vue.component('todo-item',{
       props: ['content'],
       template: '
  • {{content}}
  • '   })

    JSbin 预览

    组件与实例的关系

    Vue 之中,每一个组件其实也是一个 Vue 的实例。因此在 Vue 项目中,是一个个实例构建而成的。
    因此组件之中,也可以绑定 @click 事件,添加 methods 属性。

     Vue.component('todo-item',{
       props: ['content'],
       template: '{{content}}',
       methods: {
        handleClick: function(){
         alert('clicked')
        }
       }
      })

    JSbin 预览

    同样的实例也可以被称作一个组件,那么我们这个根实例当中的 template 模板是什么呢 ?
    如果一个 Vue 实例没有模板,会到挂载点去找。如下实例,根实例会找到 #root 下面挂载点的所有内容作为模板。

    new Vue({
       el: "#root",
       data: {
        inputValue: '',
        list: []
       },
       methods: {
        handleSubmit: function(){
         this.list.push(this.inputValue)
         this.inputValue = ''
        }
       }
      })

    为 todoList 添加删除功能

    通过 发布 / 订阅,当子组件点击时,通知父组件把数据删除掉。在子组件中,发布自定义一个 'delete' 事件。调用 this.$emit 方法,并传递 index 的值。

    子组件向外部进行发布

      //子组件
      Vue.component('todo-item',{
       props: ['content','index'],
       template: '{{content}}',
       methods: {
        handleClick: function(){
         //发布
         this.$emit('delete', this.index)
        }
       }
      })

    父组件在模板里创建子组件的时候,监听子组件向外触发的 delete 事件,如果监听到 delete 事件,执行 handleDelete 函数。

        
          

    然后在父组件的 methods 中,写好 handleDelete 方法。

      //最外层实例,父组件
      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) //使用splice方法删除list
        }
       }
      })

    以上是“Vuejs如何实现简易todoList功能”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!


    网站名称:Vuejs如何实现简易todoList功能
    文章网址:http://cdiso.cn/article/igheei.html

    其他资讯