Vue 应用是通过用 Vue 函数创建一个 Vue 实例开始的。
const app = new Vue({
//选项
});
在构造函数中传入一个对象,并且在对象中声明各种Vue需要的数据和方法,包括: el、data、methods 等。
<div id="app"> div>
var vm = new Vue({
el:"#app" //关联div
})
这样,Vue就可以对id=app的div元素作为模板进行渲染。<div id="app">
<input type="text" v-model="name"/>
div>
var vm = new Vue({
el:"#app" //关联div
data:{//数据
name:"测试数据",
}
})
name变化会影响input框中的value;同样,value也会影响name的值。<div id="app">
<button v-on:click="subNum">-button>
{{number}}
<button @click="addNum()">+button>
div>
var vm = new Vue({
el:"#app",
data:{
number: 1,
},
methods:{
addNum:function (){
this.number++;
},
subNum:function (){
this.number--;
}
}
});
每个 Vue 实例在被创建时都要经过一系列的初始化过程 :创建实例,装载模板,渲染模板等等。
Vue为生命周期中的每个状态都设置了钩子函数(监听函数)。每当Vue实例处于不同的生命周期时,对应的函数就会被触发调用。
指令 (Directives) 是带有 v- 前缀的特殊特性。
指令特性的预期值是:单个 JavaScript 表达式。
指令的职责是:当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。
1)花括号: {{表达式}}
2)插值闪烁
使用花括号{{}}方式在网速较慢时会出现问题。
在数据未加载完成时,页面会显示出原始的{{表达式}},加载完毕后才显示正确数据,称之为插值闪烁。
出现插值闪烁时,可以使用v-text和v-html来代替{{}}。
数据影响了视图渲染,但是反过来就不行,因此可看做是单向绑定。
<div id="app">
<span v-text="name">span><br>
<span v-html="age">span>
div>
<script src="node_modules/vue/dist/vue.js">script>
<script>
const app = new Vue({
el:"#app",//元素,vue作用的标签
data:{
name:"测试data-name",//直接采用{{name}} 取值,即可
age:"12",
}
});
script>
视图(View)和模型(Model)之间会互相影响。
目前v-model的可使用元素有:
基本上除了最后一项,其它都是表单的输入项。
<div id="app">
<input type="text" v-model="name">
<p>{{name}}p>
div>
<script src="node_modules/vue/dist/vue.js">script>
<script>
// new一个Vue实例
const app = new Vue({
el:"#app",//element,要渲染的页面元素
data:{//数据:里面有多个属性,均可渲染到视图中
name:"测试数据",//属性:直接采用{{name}} 取值,即可,更改name的属性值页面也会随之变化
}
});
script>
1)基本用法:v-on指令用于给页面元素绑定事件。
语法:v-on:事件名="js片段或函数名"
<div id="app">
<button v-on:click="number++">+button><br/>
<button v-on:click="subNum">-button><br/>
{{number}}
<br>
div>
<script src="node_modules/vue/dist/vue.js">script>
<script>
const app = new Vue({
el:"#app",//元素,vue作用的标签
data:{
name:"测试数据",//直接采用{{name}} 取值,即可
number:50,
},
methods:{//方法
subNum(){
number--;
}
}
});
script>
2)事件修饰符
在事件处理程序中调用 event.preventDefault() 或 event.stopPropagation() 是非常常见的需求。
尽管我们可以在方法中轻松实现这点,但更好的方式是:方法只有纯粹的数据逻辑,而不是去处理 DOM 事件细节。
为了解决这个问题,Vue.js 为 v-on 提供了事件修饰符。
修饰符是由点开头的指令后缀来表示的。
例如:阻止默认事件 .stop
<div id="app">
<div style="height: 100px;width: 100px;background-color: azure"
v-on:click.stop="consoleThis('this is a div');">
<button @click.stop="consoleThis('this is a button');">
冒泡事件测试
button>
div>
div>
<script src="node_modules/vue/dist/vue.js">script>
<script>
const app = new Vue({
el:"#app",//元素,vue作用的标签
data:{
name:"测试data-name",//直接采用{{name}} 取值,即可
number:50,
},
methods:{//方法
consoleThis(msg){
console.log(msg);
}
}
});
script>
3)按键修饰符
在监听键盘事件时,我们经常需要检查常见的键值。
Vue 允许为 v-on 在监听键盘事件时添加按键修饰符:
<input v-on:keyup.enter="submit">
<input @keyup.enter="submit">
记住所有的 keyCode 比较困难,所以 Vue 为最常用的按键提供了别名:
全部的按键别名:
4)组合按钮
可以用如下修饰符来实现仅在按下相应按键时才触发鼠标或键盘事件的监听器。
<input @keyup.alt.67="clear">
<div @click.ctrl="doSomething">DoSomethingdiv>