zoukankan      html  css  js  c++  java
  • todocmvc的安装

    安装依赖

    官网

    安装依赖的css,js

    $npm install
    

    引入vue

    <script src="js/vue.js"></script>
    

    定义初始化数据

    在app.js中,实例化Vue,然后定义初始化数据

    { //为了形成块级作用域()()
    	let vm = new Vue({
    		el: '#app',
    		data: {
    			datas: [
    			   {id: 121,title: 'html5',isCompleted: false},
    			   {id: 122,title: 'css3',isCompleted: false},
    			   {id: 123,title: 'js6',isCompleted: false},
    			]
    		}
    	})
    

    绑定假数据到li上

    如果当前的isCompleted是true,就是显示选中状态

    <li :class="{completed: isCom}" v-for="(item,index) in datas">
    	<div class="view">
    		<input class="toggle" type="checkbox">
    		<label>{{ item.title }}</label>
    		<button class="destroy"></button>
    	</div>
    	<input class="edit" value="Create a TodoMVC template">
    </li>
    

    双向数据绑定

    <input class="new-todo" placeholder="What needs to be done?" v-model="val">
    
    val: '', //显式声明 输入框数据
    

    回车输入数据

    <input class="new-todo" placeholder="What needs to be done?" @keyup.enter="addItem" v-model="val">
    
    methods: {
    	addItem(){
    		if(this.val){ //val存在或者非空的时候才会去添加
    			this.datas.push({
    				//console.log(new Date().getTime());
    				id: new Date().getTime(), //为了保持id的唯一
    				title: this.val,
    				isCompleted: false,
    			});
    			this.val = ''; //填完数据以后清空输入框的内容
    		}
    	}
    }
    

    显示总计

    通过一个方法来计算数组数据的长度

    methods: {
    	addItem(){
    		if(this.val){ //val存在或者非空的时候才会去添加
    			this.datas.push({
    				//console.log(new Date().getTime());
    				id: new Date().getTime(), //为了保持id的唯一
    				title: this.val,
    				isCompleted: false,
    			});
    			this.val = ''; //填完数据以后清空输入框的内容
    		}
    	},
    	clearCompleted(){
    		let arr = [];
    		//遍历datas,如果当前选项是未选中,就把它留下
    		this.datas.forEach(function(elem){
    			if(!elem.isCompleted){
    				arr.push(elem);
    			}
    		},this)
    		this.datas = arr;
    	}
    }
    

    首先绑定计算属性

    <span class="todo-count"><strong>{{ legTotal }}</strong> item left</span>
    

    选中后显示隐藏completed

    通过v-show来控制显示隐藏

    <button class="clear-completed" v-show="isShowClear">Clear completed</button>
    
    //在计算属性中
    compluted: {
    	isShowClear(){
    		for(let i=0;i<this.datas.length;i++){
    			if(this.datas[i].isCompleted){
    				return true
    			}		
    		}
    		return false
    	}
    }
    

    点击clear completed删除选中项

    绑定点击事件

    <button class="clear-completed" v-show="isShowClear" @click="clearCompleted">Clear completed</button>
    

    在方法中写这个点击事件

    clearCompleted(){
    	let arr = [];
    	//遍历datas,如果当前选项是未选中,就把它留下
    	this.datas.forEach(function(elem){
    		if(!elem.isCompleted){
    			arr.push(elem);
    		}
    	},this)
    	this.datas = arr;
    },
    

    点击X号删除当前项

    添加点击事件

    <button class="destroy" @click="removeCurrent(index)"></button>
    
    removeCurrent(index){
    	this.datas.splice(index,1);					
    }
    

    全选全不选

    点击全选如果是true,让数据全部变成非选中状态;

    <input id="toggle-all" class="toggle-all" type="checkbox"  @click="checkedAll">
    
    //在方法中
    checkedAll(){
    	if(this.isCheckedAll){ //全部选中
    		this.datas.forEach(elem=>{
    			elem.isCompleted = false;
    		})					
    	}else{
    		this.datas.forEach(elem=>{
    			elem.isCompleted = true;
    		})	
    		
    	}
    	this.isCheckedAll = !this.isCheckedAll;
    }
    

    写在最后

    大家可以练习练习。

  • 相关阅读:
    ubuntu segmentation fault 段错误
    css配合js模拟的select下拉框
    让IE6下支持固定定位
    max-height,min-height在IE下不支持的解决方法
    图片居中
    完美运动框架,随意调用,兼容性好
    JS创建Ajax的XMLHttpRequest对象的通用方法
    JS兼容性问题(FF与IE)
    css样式
    html之marquee详解[转]
  • 原文地址:https://www.cnblogs.com/guanqiweb/p/9825286.html
Copyright © 2011-2022 走看看