vue
基础语法
带有前缀 v-
的指令,表示它们是 Vue 提供的特殊特性。
v-bind
绑定元素(单向绑定)
<body>
<div id="app">
<h1 v-bind:title="message">标题</h1>
<!-- v-bind 指令的简写形式: 冒号(:) -->
<h1 :title="message">标题</h1>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script>
<script>
new Vue({
el: '#app',
data: {
message: '页面加载于 ' + new Date().toLocaleString()
}
})
</script>
</body>
v-if
条件判断语句
<body>
<div id="app">
<!--=== 三个等号在 JS 中表示绝对等于(就是数据与类型都要相等) -->
<h1 v-if="type === 'A'">A</h1>
<h1 v-else-if="type === 'B'">B</h1>
<h1 v-else-if="type === 'C'">C</h1>
<h1 v-else>who</h1>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script>
<script>
var vm = new Vue({
el: '#app',
data: {
type: 'A'
}
})
</script>
</body>
v-for
循环语句
<body>
<div id="vue">
<li v-for="item in items">
{ { item.message } }
</li>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script><script>
var vm = new Vue({
el: '#app',
data: {
//数组
items: [
{message: 'Vue.js'},
{message: 'Node.js'}
]
}
});
</script>
</body>
- items 是数组,item是数组元素迭代的别名。
- 这里和 Thymeleaf 的语法十分相似。
v-on
监听事件
<body>
<div id="app">
<!-- v-on 绑定了 click 事件,并指定了名为 sayHi 的方法 -->
<button v-on:click="sayHi">单击</button>
<!-- v-on 指令的简写形式 @ -->
<button @click="sayHi">单击</button>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script>
<script>
var vm = new Vue({
el: '#app',
data: { message: 'Hello World' },
// 方法必须定义在 Vue 实例的 methods 对象中
methods: {
sayHi: function (event) {
// `this` 在方法里指向当前 Vue 实例
alert(this.message);
}
}
});
</script>
</body>
v-model
双向绑定
- 数据发生变化的时候,视图跟着变化。
- 视图发生变化的时候,数据跟着变化。
<body>
<div id="app">
<!-- v-bind:value只能进行单向的数据渲染 -->
<input type="text" v-bind:value="searchMap.keyWord">
<!-- v-model 可以进行双向的数据绑定 -->
<input type="text" v-model="searchMap.keyWord">
<p>绑定数据:{ { searchMap.keyWord } }</p>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script>
<script>
new Vue({
el: '#app',
data: {
searchMap:{
keyWord: 'kuangshen'
}
}
})
</script>
</body>
用浏览器打开以上代码可以看到:
- 改变 v-bind 绑定的输入框的值,下方的值不会改变。
- 改变 v-model 绑定的输入框的值,下方的值会改变。
组件
<body>
<div id="app">
<ul>
<my-component-li v-for="item in items" v-bind:item="item"></my-component-li>
</ul>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.js"></script>
<script>
// 先注册组件
Vue.component('my-component-li', {
props: ['item'],
template: '<li>Hello { {item} }</li>'
});
// 再实例化
Vue var vm = new Vue({
el: '#app',
data: {
items: ["张三", "李四", "王五"]
}
});
</script>
</body>
说明
- v-bind:item=”item”:将遍历的 item 项绑定到组件中 props 定义的名为 item 属性上。
- = 号左边的 item 为 props 定义的属性名,右边的 item 为 item in items 中遍历的 item 项的值。