我是靠谱客的博主 无情墨镜,最近开发中收集的这篇文章主要介绍todomvc 组件编写逻辑,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

第一步创建data数据
 
data:{
            name:'',
            list:[
                // {id:1,name:'小红',completed:false},
                // {id:2,name:'小蓝',completed:true},
                // {id:3,name:'小紫',completed:false},
            ]
},
 
第二步,循环数据输出到模板
 
<li :class="{completed:item.completed}" v-for='item in list' >              //动态的绑定classcompleted:item.completed完成划线效果
                        <div class="view">
                            <input class="toggle" type="checkbox" checked>
                            <label>{{item.name}}</label>
                            <button class="destroy"></button>
                        </div>
                        <input class="edit" value="Create a TodoMVC template">
 </li>
 
第三步,checkbox和划线联动,当checkbox为true时item.completed的值也为true
 
<li :class="{completed:item.completed}" v-for='item in list' >          
                        <div class="view">
                            <input class="toggle" type="checkbox" v-model='item.completed'>
                            <label>{{item.name}}</label>
                            <button class="destroy"></button>
                        </div>
                        <input class="edit" value="Create a TodoMVC template">
 </li>
第四步,添加数据功能
 
<header class="header">
                <h1>todos</h1>
                <input class="new-todo" placeholder="What needs to be done?" autofocus @keyup.enter='add' v-model='name'>   // 使用键盘事件调用事件函数,使用双向数据绑定绑定name
</header>
 
methods:{
            add(){ 
 
if(this.name.trim() === ''){                                                                //使用this.name.trim()方法防止输入空格
                    return
                }
                                                                                                 //使用push方法添加数据对象,this.name='' 用来清除事件处理完成后的文字
                 this.list.push({id:4,name:this.name,completed:false}),  
                this.name=''
            }
        },
 
 第五步,删除功能
<li :class="{completed:item.completed}" v-for=' (item,index) in list' >           //使用item索引
                        <div class="view">
                            <input class="toggle" type="checkbox" v-model='item.completed'>
                            <label>{{item.name}}</label>
                            <button class="destroy" @click='remove'></button>
                        </div>
                        <input class="edit" value="Create a TodoMVC template">
</li>
 
remove(index){                                        //删除
                this.list.splice(index,1)
 }
 
第六步,隐藏页脚
 
  <footer class="footer" v-show='showFooter'>        //使用v-show  建立显示隐藏
                <!-- This should be `0 items left` by default -->
                <span class="todo-count"><strong>0</strong> item left</span>
                <!-- Remove this if you don't implement routing -->
                <ul class="filters">
                    <li>
                        <a class="selected" href="#/">All</a>
                    </li>
                    <li>
                        <a href="#/active">Active</a>
                    </li>
                    <li>
                        <a href="#/completed">Completed</a>
                    </li>
                </ul>
                <!-- Hidden if no completed items are left ↓ -->
                <button class="clear-completed">Clear completed</button>
</footer>
                                         //检测数组中的元素数量,如果大于0返回true
computed:{
            showFooter(){
                return this.list.length > 0     
            }
        }
 
第七步,双击进入编辑
 
<li :class="{completed:item.completed, editing:item.id === editid}" v-for='(item,index) in list' >       // 通过editing的值 ture和flase来决定是否进入编辑状态,判断当前id时否等于data中的id
                        <div class="view">
                            <input class="toggle" type="checkbox" v-model='item.completed'>
                             <label @dblclick='showEdit(item.id)'>{{item.name}}</label>                        //通过双击事件,传递当前id
                            <button class="destroy" @click='remove'></button>
                        </div>
                        <input class="edit" v-model='item.name'>
 </li>
 
 
 
showEdit(id){
                this.editid = id            将当前id赋值给id:-1  的数据,覆盖掉原来的data id  
            }
 
第八步,回车关闭编辑
 
<li :class="{completed:item.completed,editing:item.id === editid}" v-for='(item,index) in list' >
                        <div class="view">
                            <input class="toggle" type="checkbox" v-model='item.completed'>
                            <label @dblclick='showEdit(item.id)'>{{item.name}}</label>
                            <button class="destroy" @click='remove'></button>
                        </div>
                         <input class="edit" v-model='item.name' @keyup.enter='update'>
 </li>
 
update(){
                 this.editid=-1
            }
 
 
 
 

转载于:https://www.cnblogs.com/xiannv/p/11002643.html

最后

以上就是无情墨镜为你收集整理的todomvc 组件编写逻辑的全部内容,希望文章能够帮你解决todomvc 组件编写逻辑所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部