模板
template 三种写法 (xml 标签)
一、Vue 完整版,写在 HTML 里
<div id=xxx>{{n}}<button @="add">+1</button></div>new Vue({el: "#xxx",data:{n:0}, //data 可以改成函数methods:{add(){ this.n += 1 }}})
二、Vue 完整版,写在构造选项里
<div id=xxx></div>new Vue({data:{n:0}, //data 可以改成函数template:`<div>{{n}}<button @="add">+1</button></div>`methods:{add(){ this.n += 1 }}}).$mount("#xxx")
三、Vue 非完整版,写在 xxx.Vue 文件里
<div id=xxx></div>//xxx.Vue<template><div>{{n}}<button @="add">+1</button></div></template><script>export defaule {data(){return {n:0}}, //data 必须函数,避免组件复用时 data 被覆盖methods:{add(){ this.n += 1 }}}<style>写 CSS</style>//main.jsimport Xxx from './xxx.Vue'new Vue({render:h=>h(Xxx)}).$mount("#xxx")
指令
展示内容
表达式
{{ object.a }表达式{{ n+1 }}可以写任何运算{{ fn(n) }}可以调用函数- 如果值为
undefined或null就不显示 另一种写法为
<div v-text="表达式"> </div>HTML内容
如果 data.x 值为
<strong>hi</strong><div v-html="x"> </div>即可显示粗体的 hiv-pre
<div v-pre>{{ n }} </div>不会对模板进行编译绑定属性
绑定 src
<img v-bind:src="x" />-
绑定 css 样式
<div :style="{ border: '1px solid red',heigh=100}"></div>绑定事件
<button v-on:事件名="add || add(1) || n += 1">+1</button>简写
<button @click="add">+1</button>表单输入绑定 v-model
if…else
<div v-if="X>0"> </div> //x 大于 0<div v-else-if="X===0"> </div> //X 为 0<div v-else> </div> //X 小于 0
for 循环
v-for="(value,key) in obj || array" :key="index"(使用 index 会有 bug,最好用 id)<ul><1i v-for="(item, index)in users" :key="index">索引:{{ index }}, 值:{{ item.name }}</1i></ul><ul><li v-for="(value, name)in obj" :key="name">属性名:{{ name }}, 属性值:{{ value }}</1i></ul>
显示、隐藏
<div v-show=" n%2 === 0">n是偶数</div>近似等于
<div :style="{display: n%2 === 0 ? block : none">n是偶数</div>修饰符
@click.stop="add"表示阻止捕获、冒泡@click.prevent="add"表示阻止默认动作@click.stop.prevent="add"同时表示两种意思v-on 支持的有:
.{keycode | keyAlias} .stop .prevent .capture .self .once .passive .native- v-bind 支持的有:
.prop .camel .sync - v-model 支持的有:
.lazy .number .trim - 快捷鍵相关:
.ctrl .alt .shift .meta .exact - 鼠标相关:
.left .right .middle.sync 修饰符
