1. 嵌套组件
//js
import Vue from 'vue'
var myHeader = {
template : '<p>this is my header</p>'
}
new Vue({
el : '#app',
components : {
'my-header' : myHeader
}
})
//html
<div id='app'>
<my-header></my-header>
</div>
2. 组件内引用变量
var myHeader = {
template : '<p>this is my header {{ a + b }}</p>',
data () { <!-- 等同于 data : function () { -->
return {
a : 1,
b : 2
}
}
}
<!--data 应采用 function 方式避免直接赋值。保证当 HTML多次引用该组件时,每个组件的变量为按值引用互不干扰-->
3. 内置组件
keep-alive
缓存文件
var myHeader = {
template : '<keep-alive> <router-view></router-view> </keep-alive>'
}
<!--被访问的 router-view 内文件会被缓存-->
4. 内容填充
//html
<ul>
//写法1
<li v-for='item in list'>{{ item.name }} - {{ item.price }}</li>
//写法2
<li v-for='item in list' v-text="item.name + '-' + item.price></li>
</ul>
//js
export default {
name: 'App',
data () {
return {
list : [
{ name : 'apple', price : 100 },
{ name : 'banana', price : 300 }
]
}
}
}
5. 循环
//html
<ul>
<li v-for='(item,index) in list' :class='{odd : index % 2}'>{{ item.name }} - {{ item.price }} - {{ index }}</li>
</ul>
<ol>
<li v-for='(value,key) in objList'>{{ key }} : {{ value }}</li>
</ol>
//js
export default {
name: 'App',
data () {
return {
list : [ { name : 'apple', price : 100 }, { name : 'banana', price : 300 } ],
objList : { name : 'Amber', age : 25, gender : 'female' }
}
}
}