一、模板语法
1、文本渲染
使用双花括号语法插入文本
<template><div><h3>msg: {{ message }}</h3></div>
</template><script>
export default {data() {return {message: "输出信息"}}
}
</script><style scoped></style>
2、渲染标签
<template><div><div v-html="rawHtml"></div></div>
</template><script>
export default {data() {return {rawHtml: "<a href='http://www.baidu.com'>百度</a>"}}
}
</script><style scoped></style>
3、属性
<template><div><div v-bind:id="idValue">属性测试</div><!-- 可以简写为: --><div :id="idValue">属性测试</div></div>
</template><script>
export default {data() {return {idValue: 500}}
}
</script><style scoped></style>
5、模板语法支持表达式
<template><div><p>{{ number + 10 }}</p><p>{{ flag ? "结果为真" : "结果为假" }}</p></div>
</template><script>
export default {data() {return {number: 500,flag: false}}
}
</script><style scoped></style>
二、条件渲染
1、条件渲染(为假时不渲染)
<template><div><p v-if="flag">为真时显示</p><p v-else>为假时显示</p></div>
</template><script>
export default {data() {return {flag: false}}
}
</script><style scoped></style>
2、条件展示(渲染不显示)
<template><div><p>写在前</p><p v-show="flag">为真时显示</p><p>写在后</p></div>
</template><script>
export default {data() {return {flag: false}}
}
</script><style scoped></style>
3、区别
v-if 切换时会有较高的渲染开销
v-show 有较好的性能
三、列表渲染
1、列表渲染
<template><div><ul><li v-for="item in items">{{ item.msg }}</li></ul></div>
</template><script>
export default {data() {return {items: [{ msg: "数据1" }, { msg: "数据2" }]}}
}
</script><style scoped></style>
2、维护状态
<template><div><ul><li v-for="(item, index) in items" :key="index">{{ item.msg }}</li></ul></div>
</template><script>
export default {data() {return {items: [{ msg: "数据1", id: 1 }, { msg: "数据2", id: 2 }]}}
}
</script><style scoped></style>
数据更新,已经渲染数据不变,仅添加新数据。给数据添加索引,方便重用原有数据,保持数据顺序。
四、事件处理
1、事件监听
<template><div><!-- 使用v-on:event 来监听事件,简写为 @event --><!-- <button v-on:click="count += 1">计数加一</button> --><button @click="count += 1">计数加一</button><p>{{ count }}</p></div>
</template><script>
export default {data() {return {count: 0}}
}
</script><style scoped></style>
2、事件处理方法
<template><div><button @click="AddCount">计数加一</button><p>{{ count }}</p></div>
</template><script>
export default {data() {return {count: 0}},methods: {AddCount(event) {this.count++;}}
}
</script><style scoped></style>
3、内联处理器中的方法(事件传递参数)
<template><div><button @click="AddCount(2)">计数加二</button><p>{{ count }}</p></div>
</template><script>
export default {data() {return {count: 0}},methods: {AddCount(num) {this.count += num;console.log(num);}}
}
</script><style scoped></style>
五、表单输入绑定
1、表单输入绑定
<template><div><input v-model="msg" placeholder="请输入"><p>输入了:{{ msg }}</p></div>
</template><script>
export default {data() {return {msg: ""}},methods: {}
}
</script><style scoped></style>
2、修饰符
<template><div><!-- lazy:在change(输入结束,失去选中)事件后同步 --><!-- trim:足底不过过滤首位空白字符 --><input v-model.lazy.trim="msg" placeholder="请输入"><p>输入了:{{ msg }}</p></div>
</template><script>
export default {data() {return {msg: ""}},methods: {}
}
</script><style scoped></style>