<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>通过属性绑定,为元素设置style样式</title></head><body><divid="app"><!--:style,使用对象为标签绑定css类型的属性--><!--注意:对象的属性值为kv对象,如果k包含'-',那么该k必须使用''号--><h1:style="{color:'red','font-size':'48px'}">{{msg}}</h1><h1:style="styleObj1">{{msg}}</h1><!--:style,使用数组为标签绑定多个css样式对象,如果多个对象中有相同的属性,那么后面的会覆盖前面的--><h1:style="[styleObj1,styleObj2]">{{msg}}</h1></div><scripttype="text/javascript"src="js/vue.js"charset="UTF-8"></script><scripttype="text/javascript"charset="UTF-8">var vm =newVue({el:'#app',data:{msg:'hello vue!',styleObj1:{color:'red','font-size':'48px'},styleObj2:{color:'green','font-style':'italic'}}})</script></body></html>
v-for数据遍历
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>vue-for</title><style>[v-cloak]{display: none;}</style></head><body><divid="app"><!--v-for,遍历数组--><pv-cloak>{{list[0]}}</p><!--注意:key表示数组中的元素,i是元素索引--><pv-cloakv-for="(key,i) in list">{{key}},{{i}}</p><!--遍历数组对象--><pv-cloakv-for="(obj,i) in listObj">{{obj.username}}</p><!--:key,使用 v-for循环的时候,或者在一些特殊情况中,如果v-for有问题,
必须在使用v-for的同时,指定唯一的 字符串/数字 类型:key 值--><!--注意:v-for循环的时候,key属性只能使用number/string类型的值--><pv-cloakv-for="item in listObj":key="item.id"></p><!--遍历对象中的属性,注意这里的key是属性值,value是属性名,i是索引--><pv-cloakv-for="(key,value,i) in obj">{{key}},{{value}},{{i}}</p><!--遍历数字,从1开始--><pv-cloakv-for="count in 10">{{count}}</p></div><scripttype="text/javascript"src="js/vue.js"charset="UTF-8"></script><scripttype="text/javascript"charset="UTF-8">var vm =newVue({el:'#app',data:{list:[1,2,3,4,5,6,7,8,9],listObj:[{id:1,username:'aa'},{id:2,username:'bb'},{id:3,username:'ee'},{id:4,username:'ff'},{id:5,username:'gg'}],obj:{id:1,name:'张三',age:25,gender:'男'}}})</script></body></html>
v-if,v-show控制元素内容显示/隐藏
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>v-if,v-show</title></head><body><divid="app"><!--如果元素涉及到频繁的切换,最好不要使用使用v-if--><!--控制内容的显示/隐藏,如果表达式为false,则会删除整个标签元素;每次都会重新删除或创建元素--><pv-if="flag">v-if</p><!--控制内容的显示/隐藏,如果表达式为false,则会在标签中添加一个隐藏css样式;每次不会重新进行DOM的删除和创建操作--><pv-show="flag">v-show</p></div><scripttype="text/javascript"src="js/vue.js"charset="UTF-8"></script><scripttype="text/javascript"charset="UTF-8">var vm =newVue({el:'#app',data:{flag:true}})</script></body></html>
案例:品牌列表
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>vue 品牌列表案例</title><!--bootstrap css核心文件--><linkrel="stylesheet"href="js/boostrap/css/bootstrap.min.css"><styletype="text/css">[v-cloak]{display: none;}</style></head><body><divid="app"><divclass="panel panel-primary"><divclass="panel-heading"><h3class="panel-title">添加品牌</h3></div><divclass="panel-body form-inline"><label>
Id:
<inputtype="text"class="form-control"v-model="id"></label><!--@keyup,绑定一个keyup事件,还可以指定监听哪个按键--><label>
name:
<inputtype="text"class="form-control"v-model="name"@keyup.enter="add"></label><buttontype="button"class="btn btn-primary"@click="add()">添 加</button><label>
search:
<inputtype="text"class="form-control"placeholder="name"v-model="keywords"></label></div></div><tableclass="table table-bordered table-hover table-striped"><thead><tr><th>Id</th><th>Name</th><th>Ctime</th><th>Operation</th></tr></thead><tbody><!--v-for,遍历的列表数据可以从一个方法中获取,该方法的参数可以访问vue实例中的数据--><trv-for="car in search(keywords)":key="car.id"><tdv-text="car.id"></td><tdv-text="car.name"></td><tdv-cloak>{{car.ctime | dataFormat('')}}</td><td><ahref=""@click.prevent="del(car.id)">删除</a></td></tr></tbody></table></div><scripttype="text/javascript"src="js/vue.js"charset="UTF-8"></script><!--bootstrap js核心文件--><!--<script src="js/boostrap/js/bootstrap.min.js"></script>--><scripttype="text/javascript"charset="UTF-8">//定义全局过滤器,格式化时间
Vue.filter('dataFormat',function(data,pattern){//根据给定的时间字符串,得到一个特定的时间var dt=newDate(data);var y=dt.getFullYear();var m=dt.getMonth()+1;var d=dt.getDate();if(pattern.toLowerCase()==='yyyy-mm-dd'){return`${y}-${m}-${d}`;}else{var hh=dt.getHours();var mm=dt.getMinutes();var ss=dt.getSeconds();return`${y}-${m}-${d}${hh}:${mm}:${ss}`;}});var vm =newVue({el:'#app',data:{//因为做了数据双向绑定,所以这两个属性要在这里面定义id:'',name:'',keywords:'',list:[{id:1,name:'奔驰',ctime:newDate()},{id:2,name:'宝马',ctime:newDate()},{id:3,name:'奥迪',ctime:newDate()},{id:4,name:'兰博',ctime:newDate()},{id:5,name:'福特',ctime:newDate()}]},methods:{add(){//从data上获取id和name属性值,由于做了数据双向绑定,所以这也是用户输入的值var id =this.id;var name =this.name;var ctime =newDate();
console.log(id);if(id ==null|| id ==''){alert("Id输入框的值不能为空!!");returnfalse;}if(name ==null|| name ==''){alert("Name输入框的值不能为空!!");returnfalse;}//组织出一个对象var car ={id: id,name: name,ctime: ctime};//将对象添加到data的list集合中this.list.push(car);//清空输入框的值this.id =this.name ='';},del(id){//根据id找到list对应的对象,删除他this.list.some((item, i)=>{if(item.id == id){//删除list中对应的元素this.list.splice(i,1);//终止循环returntrue;}})},search(keywords){//filter()是数组中的一个方法,首先会遍历数组,然后执行过滤操作var newList=this.list.filter(item=>{//includes()是es6的方法if(item.name.includes(keywords)){return item;}});return newList;}}})</script></body></html>