對象語法
<div v-bind:class="{ active: isActive }"></div>
<div class="static" v-bind:class="{ active: isActive, 'text-danger': hasError }"> </div>
以下 data:
data: { isActive: true, hasError: false }
渲染爲:
<div class="static active"></div>
<div v-bind:class="classObject"></div>
data: { classObject: { active: true, 'text-danger': false } }
<div v-bind:class="classObject"></div>
data: { isActive: true, error: null }, computed: { classObject: function () { return { active: this.isActive && !this.error, 'text-danger': this.error && this.error.type === 'fatal', } } }
<div v-bind:class="[activeClass, errorClass]">
data: { activeClass: 'active', errorClass: 'text-danger' }
渲染爲:
<div class="active text-danger"></div>
<div v-bind:class="[isActive ? activeClass : '', errorClass]">
<div v-bind:class="[{ active: isActive }, errorClass]">
Vue.component('my-component', { template: '<p class="foo bar">Hi</p>' })
<my-component class="baz boo"></my-component>
<p class="foo bar baz boo">Hi</p>
<my-component v-bind:class="{ active: isActive }"></my-component>
<p class="foo bar active"></p>
對象語法
<div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>
data: { activeColor: 'red', fontSize: 30 }
<div v-bind:style="styleObject"></div>
data: { styleObject: { color: 'red', fontSize: '13px' } }
數組語法
<div v-bind:style="[baseStyles, overridingStyles]">
v - if (插入 刪除節點)
<div id="app"> <h1 v-if="grsde>=90">優秀</h1> <h1 v-else-if="gradde>=60">及格</h1> <h1 v-else>不及格</h1> <template v-if="ok"> <div>hello</div> <div>wrold</div> <div>nice to meet you</div> </template> </div>
<script> var vm = new Vue({ el:'#app', data:{ ok:true, grade:80 } }); </script>
<h1 v-if="grsde>=90">優秀</h1> <h1 v-else>不及格</h1>
<div id="app"> <h1 v-if="grsde>=90">優秀</h1> <h1 v-else-if="gradde>=60">及格</h1> <h1 v-else>不及格</h1> </div>
<template v-if="ok"> <div>hello</div> <div>wrold</div> <div>nice to meet you</div> </template>
<template v-if="loginType === 'username'"> <label>Username</label> <input placeholder="Enter your username"> </template> <template v-else> <label>Email</label> <input placeholder="Enter your email address"> </template>
<template v-if="loginType === 'username'"> <label>Username</label> <input placeholder="Enter your username" key="username-input"> </template> <template v-else> <label>Email</label> <input placeholder="Enter your email address" key="email-input"> </template>
注意: 元素仍然會被高效地複用,由於它們沒有添加 key 屬性
<h1 v-show="ok">Hello!</h1>
注意: v-show 不支持 語法,也不支持 v-else
<ul> <li v-for="item in todo" v-if="item.ok">{{item.text}}</li> </ul>
var vm=new Vue({ data:{ items:[ {text:"chifan",isOk:true}, {text:"shuijue",isOk:false}, {text:"kandianshi",isOk:true}, {text:"dayouxi",isOk:true}, {text:"kandianying",isOk:false}, ] } });
示例 --- 直接上代碼:html
<ul id="example-1"> <li v-for="item in items"> {{ item.message }} </li> </ul>
var example1 = new Vue({ el: '#example-1', data: { items: [ { message: 'Foo' }, { message: 'Bar' } ] } });
結果:vue
{% raw %} {{item.message}} {% endraw %}
<ul id="example-2"> <li v-for="item in items"> {{ parentMessage }} - {{ $index }} - {{ item.message }} </li> </ul>
var example2 = new Vue({ el: '#example-2', data: { parentMessage: 'Parent', items: [ { message: 'Foo' }, { message: 'Bar' } ] } })
結果:數組
{% raw%} {{ parentMessage }} - {{ $index }} - {{ item.message }} {% endraw %}
<div v-for="(index, item) in items"> {{ index }} {{ item.message }} </div>
<div id="app"> <div v-for="value in xx"> {{value}}</div> </div>
<script> var vm=new Vue({ el:"#app", data:{ xx:{ firstName: 'John', lastName: 'Doe', age: 30 } } }); </script>
<div id="app"> <div v-for="(value,key) in xx">{{key}} is {{value}}</div> </div>
<script> var vm=new Vue({ el:"#app", data:{ xx:{ firstName: 'John', lastName: 'Doe', age: 30 } } }); </script>
<div id="app"> <div v-for="(value,key,index) in xx">{{index}}{{key}} is {{value}}</div> </div>
<script> var vm=new Vue({ el:"#app", data:{ xx:{ firstName: 'John', lastName: 'Doe', age: 30 } } }); </script>
push() 數組末尾添加緩存
pop() 數組末尾取出app
shift() 數組開頭取出函數
unshift() 數組開頭添加ui
splice() 刪除並插入this
sort() 排序code
reverse() 數組順序顛倒component
<ul id="demo"> <li v-for = "item in items"> {{item}} </li> </ul>
<script> var vm = new Vue({ el:'#demo', data:function(){ return {items:[4,2,3].splice(0,2)}; } }) </script>
filter() 過濾,參數是一個函數,取其返回值爲true的元素被添加到新數組
concat() 合併兩個數組,返回的數組是合併後的
slice() 返回數組的拷貝,從開始索引到結束索引(前含後不含)