Vue的基礎指令
阿新 • • 發佈:2020-10-16
v-bind繫結標籤屬性
通過新增v-bind:標籤屬性來控制標籤的屬性,設定後自動查詢vue裡面的資料,通常簡寫成:標籤屬性,也可以傳入物件,通過物件的值來控制是否為真
<body>
<div id="app">
<a v-bind:href="BaiDuUrl">{{txt}}</a>
<p :class="{txtPink:isPink}">新年新氣象</p>
</div>
</body>
<script>
let vm = new vue({
el:"#app",
data:{
BaiDuUrl:"https://www.baidu.com/",
txt:"百度",
isPink:true
}
})
</script>
</html >
<style>
.txtPink{
color: pink;
}
</style>
v-on監聽事件
v-on指令用於繫結事件監聽器,通常簡寫成@事件型別(click,mouseenter,mouseleave...)="表示式",表示式可以是方法名(方法需要寫在methods物件裡面,方法裡面可以接收事件物件),邏輯等.
<body>
<div id="app">
<p>{{num}}</p>
<button v-on:click="num+=2">加2</button>
<button @click="numCut">減2</button>
</div>
</body>
<script>
let vm = new Vue({
el:"#app",
data:{
num:20
},
methods: {
numCut(e){
this.num -= 2 ;
console.log(e)
}
},
})
</script>
電腦刺繡繡花廠 http://www.szhdn.com 廣州品牌設計公司https://www.houdianzi.com
v-on可以新增事件修飾符進行事件的擴充套件
.stop
.prevent
.capture
.self
.once
<!-- 阻止單擊事件冒泡 -->
<a v-on:click.stop="doThis"></a>
<!-- 提交事件不再過載頁面 -->
<form v-on:submit.prevent="onSubmit"></form>
<!-- 修飾符可以串聯 -->
<a v-on:click.stop.prevent="doThat"></a>
<!-- 只有修飾符 -->
<form v-on:submit.prevent></form>
<!-- 新增事件偵聽器時使用事件捕獲模式 -->
<div v-on:click.capture="doThis">...</div>
<!-- 只當事件在該元素本身(比如不是子元素)觸發時觸發回撥 -->
<div v-on:click.self="doThat">...</div>
<!-- 點選事件將只會觸發一次 -->
<a v-on:click.once="doThis"></a>
v-if和v-show指令控制顯示/隱藏
v-show是對樣式層面的控制,v-if是對dom節點的控制,並且可以設定v-else if,v-else進行擴充套件
<body>
<div id="app">
<h1 v-show="isShow">標題</h1>
<p v-if="isShow">第一段文字</p>
<p v-else-if="num==1">第二段文字</p>
<p v-else>第三段文字</p>
<button @click="isShow=!isShow">顯示/隱藏</button>
</div>
</body>
<script>
let vm = new Vue({
el:"#app",
data:{
isShow:true,
num:0,
},
})
</script>
v-for指令進行迴圈
當需要迴圈Vue裡面的資料渲染到頁面時可以使用v-for指令,使用 (item,index) in list的語法,通常後面設定:key="唯一值",用來高效的更新DOM.如果傳入物件可以使用(item,key,index) in obj,取到物件的鍵值
<body>
<div id="app">
<ul>
<li v-for="(item,index) in lists" :key="item">第{{index+1}}個:{{item}}</li>
</ul>
<p v-for="(item,key,index) in someOne" :key="key">第{{index+1}},{{key}}是{{item}}</p>
</div>
</body>
<script>
let vm = new Vue({
el:"#app",
data:{
lists:['段譽','王語嫣','虛竹','喬峰'],
someOne:{
'早上':'吃早餐',
'中午':'吃午飯',
'晚上':"吃晚飯"
}
},
})
</script>
<!-- 頁面資料
第1個:段譽
第2個:王語嫣
第3個:虛竹
第4個:喬峰
第1,早上是吃早餐
第2,中午是吃午飯
第3,晚上是吃完飯
-->
v-model指令
v-model的值是,vue接收表單元素的值的變數名,可以實現雙向資料繫結,通過改變v-model的txt值,使繫結txt值的元素髮生改變.
v-model限制在input、select、textarea、components中使用,修飾符.lazy(取代 input 監聽 change 事件)、.number(輸入字串轉為有效的數字)、.trim(輸入首尾空格過濾)
v-model 本質上包含了兩個操作:
- v-bind 繫結input元素的value屬性
- v-on 指令繫結input元素的input事件,使用data中的資料更新為input元素的value
<body>
<div id="app">
<p >{{txt}}</p>
<input type="text" v-model="txt">
</div>
</body>
<script>
let vm = new Vue({
el:"#app",
data:{
txt:'預設文字'
},
})
</script>