给标签属性设置vue变量的值,多用于设置href、style等HTML属性
代码片段
<a v-bind:href="school.url.toUpperCase()">点我去{{school.name}}学习1</a>
<a :style="blackColor">动态设置css背景颜色</a>
// isMarkRed可以动态设置class样式是否添加,其他地方使用也可如此
<div :class="{active,markRed:isMarkRed}">设置激活和背景色</div>
<script>
const app = new Vue({
el:"#app",
data():{
return {
isMarkRed:false
}
}
})
</script>
给DOM元素添加事件
当事件传递的函数没有传参时和传递$event
时
此时获取的是$event事件对象。
<!-- 准备好一个容器-->
<div id="root">
<button @click="showInfo1">点我提示信息1(不传参)</button>
<button @click="showInfo2($event,66)">点我提示信息2(传参)</button>
</div>
<script type="text/javascript">
const vm = new Vue({
el:'#root',
methods:{
showInfo1(event){
// console.log(event.target.innerText)
// console.log(this) //此处的this是vm
alert('同学你好!')
},
showInfo2(event,number){
console.log(event,number)
// console.log(event.target.innerText)
// console.log(this) //此处的this是vm
alert('同学你好!!')
}
}
})
</script>
v-on:事件名.修饰符
的使用
<div id="root">
<!-- 阻止默认事件(常用) -->
<a href="http://www.baidu.com" @click.prevent="showInfo">点我提示信息</a>
<!-- 阻止事件冒泡(常用) -->
<div class="demo1" @click="showInfo">
<button @click.stop="showInfo">点我提示信息</button>
<!-- 修饰符可以连续写 -->
<!-- <a href="http://www.baidu.com" @click.prevent.stop="showInfo">点我提示信息</a> -->
</div>
<!-- 事件只触发一次(常用) -->
<button @click.once="showInfo">点我提示信息</button>
<!-- 使用事件的捕获模式 -->
<!-- js默认分为捕获阶段和冒泡阶段, -->
<!-- 捕获阶段:从外向内;冒泡阶段:从内向往 -->
<!-- capture:让事件在捕获阶段就执行,事件默认是冒泡阶段执行。 -->
<div class="box1" @click.capture="showMsg(1)">
div1
<div class="box2" @click="showMsg(2)">
div2
</div>
</div>
<!-- 只有点击当前元素才会触发,只有event.target是当前操作的元素时才触发事件; -->
<!-- 冒泡阶段:冒泡上去的DOM元素始终是点击的DOM元素,并不会改变。 -->
<div class="demo1" @click.self="showInfo">
<button @click="showInfo">点我提示信息</button>
</div>
<!-- 事件的默认行为立即执行,无需等待事件回调执行完毕; -->
<ul @wheel.passive="demo" class="list">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
</div>
v-on:按键事件.按键修饰符
的使用
按键修饰符可以是按键keyCode也可以是特定单词,可加也可不加,加则具体到某个按键,不加则全部按键。想了解所有按键的keyCode,请点击此处。
<input type="text" placeholder="按下回车提示输入" @keydown.enter="showInfo">
...
showInfo(e){
// console.log(e.key,e.keyCode)
console.log(e.target.value)
}
...
把value属性和vue数据变量, 双向绑定到一起
<div id="root">
<!-- 简写 -->
单向数据绑定:<input type="text" :value="name"><br/>
双向数据绑定:<input type="text" v-model="name"><br/>
</div>
<script type="text/javascript">
new Vue({
el:'#root',
data:{
name:'请输入文本'
}
})
</script>
v-model.修饰符
的使用
代码示例:
<div id="root">
<form @submit.prevent="demo">
账号:<input type="text" v-model.trim="userInfo.account">
年龄:<input type="number" v-model.number="userInfo.age">
其他信息:<textarea v-model.lazy="userInfo.other"></textarea> <br/><br/>
<button>提交</button>
</form>
</div>
<script type="text/javascript">
Vue.config.productionTip = false
new Vue({
el: '#root',
data: {
userInfo: {
account: '',
age: 18,
agree: ''
}
}
})
</script>
更新DOM对象的innerText/innerHTML
v-text
v-html
注意:
示例代码:
<div id="root">
<div v-text="name"></div>
<div v-html="str"></div>
</div>
<script type="text/javascript">
new Vue({
el:'#root',
data:{
name: '张三',
str:'你好啊!
'
}
})
</script>
控制标签的隐藏或出现
v-if
v-show
备注:使用v-if的时,元素可能无法获取到,而使用v-show一定可以获取到。
代码示例:
<div id="root">
<!-- 使用v-show做条件渲染 -->
<!-- <h2 v-show="false">欢迎学习Vue</h2> -->
<!-- <h2 v-show="1 === 1">欢迎学习Vue</h2> -->
<!-- 使用v-if做条件渲染 -->
<!-- <h2 v-if="false">欢迎学习Vue</h2> -->
<!-- <h2 v-if="1 === 1">欢迎学习Vue</h2> -->
</div>
<script type="text/javascript">
const vm = new Vue({
el:'#root',
})
</script>
代码示例:
<!-- 准备好一个容器-->
<div id="root">
<!-- 遍历数组 -->
<h2>人员列表(遍历数组)</h2>
<ul>
<li v-for="(p,index) in persons" :key="index">
{{p.name}}-{{p.age}}
</li>
</ul>
<!-- 遍历对象 -->
<h2>汽车信息(遍历对象)</h2>
<ul>
<li v-for="(value,k) of car" :key="k">
{{k}}-{{value}}
</li>
</ul>
<!-- 遍历字符串 -->
<h2>测试遍历字符串(用得少)</h2>
<ul>
<li v-for="(char,index) of str" :key="index">
{{char}}-{{index}}
</li>
</ul>
<!-- 遍历指定次数 -->
<h2>测试遍历指定次数(用得少)</h2>
<ul>
<li v-for="(number,index) of 5" :key="index">
{{index}}-{{number}}
</li>
</ul>
</div>
<script type="text/javascript">
Vue.config.productionTip = false
new Vue({
el:'#root',
data:{
persons:[
{id:'001',name:'张三',age:18},
{id:'002',name:'李四',age:19},
{id:'003',name:'王五',age:20}
],
car:{
name:'奥迪A8',
price:'70万',
color:'黑色'
},
str: "hello"
}
})
</script>
参考博客:vue 指令语法总结