<body>
<script src='https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js'></script>
<div id='myApp'>
vue指令: 是vue模板中在标签属性上以v-开头的字段, 常用的指令有 v-text, v-html, v-model, v-on, v-bind, v-for, v-if, v-show, v-once <hr>
1, v-if指令, 判断表达式是否成立, 创建或销毁标签
<h1 v-if="age >= 18">您已成年, 欢迎进入</h1>
<h1 v-else>未成年人, 请走后门</h1>
<hr>
2, v-show指令, 判断表达式是否成立, 显示或隐藏标签, 针对标签频繁显示隐藏情况
<button v-show="age >= 18">家长管理</button>
<hr>
3, v-on指令, 给标签绑定事件 格式 v-on:事件名="事件函数" 函数名后的小括号可加可不加,
如果不传参, 不建议加(), 默认参数是事件对象event <br>
如果加(),但不传参, 默认参数undefined <br>
如果加(),且传参, 参数是实际传入参数值 <br>
<button v-on:click="add">不加(){{age}}</button>
<button v-on:click="add()">加(){{age}}</button>
<button v-on:click="add(5)">加(参数){{age}}</button>
<button @click="add">v-on: 可以简化为@</button>
<hr>
4, v-bind指令, 给标签绑定动态属性 <br>
<a href="./1,vue基本结构.html">正常的属性</a>
<a v-bind:href="url">动态的属性</a>
<div v-bind:class="'c1 '+ myClass" >多个calss拼接写法</div>
<div v-bind:class="myClass" class="c1">动态calss和静态class可以共存</div>
<div v-bind:style="myStyle">动态行内样式</div>
<div v-bind:draggable="true">bool值属性的绑定也可以直接写bool值</div>
<div :id="myClass[1]">v-bind: 简写为 : </div>
<hr>
5, v-once 限制标签中的数据只渲染一次, 当数据更新时不会重新渲染
<h1 v-once>{{age}}</h1>
<hr>
6, v-for 指令 实现标签的循环渲染
<select>
<!-- 简单循环一个数字, 从1开始循环 -->
<option v-for="item in 5" :value="item">{{item}}</option>
<!-- 循环数组 -->
<option v-for="item in myClass" value="">{{item}}</option>
<!-- 循环时的索引 -->
<option v-for="item,i in myClass" value="">{{i+1}}:{{item}}</option>
</select>
<div v-for="item,i in arr">
<br>
<b>{{i}}:</b>
<span>{{item.name}}</span>
</div>
vue中提供了一个template标签, 可以作为父标签进行循环,但不会被渲染到DOM上
<template v-for="item,i in arr">
<br>
<b>{{i}}:</b>
<span>{{item.name}}</span>
</template>
</div>
<script>
new Vue({
el: '#myApp',
data: {
arr: [
{name:"张三"},
{name: "小名"},
{name: "李四"}
],
true: false, // true是一个bool值,不能当作变量名,
age: 15,
url: "./2,,vue数据绑定.html",
// 如果有多个calss值,建议使用数组结构
myClass: ['c2', 'c3', 'c4'],
// 标签样式style属性建议绑定对象, 注意: 1,样式名用小驼峰 2,样式值用字符串
myStyle: {
color:'red',
fontSize: '20px',
background: 'blue'
}
},
methods: {
add(e){
console.log(e)
this.age ++;
}
}
})
</script>
</body>