new Vue({
el:'#demo',
data:{
message:'Hello vue.js!'
}
})
我们看到这个括号里面包含了很多中间的选项,小括号里面其实是一些参数,这些参数指定了实例化vue的一些特性
第一个选项data
new Vue({
data:{
a:1,
b:[]
}
})
<p>{{ a }}</p>
vue的所有数据都是放在data里面的,data里面也是一个对象,对象里面的a可以对页面进行进行双向绑定,这两个是关联的
第二个选项method
new Vue({
data:{
a:1,
b:[]
},
methods:{
doSomething:function(){
console.log(this.a)
}
}
})
methods就是方法,这个方法里面打印了a
第三个选项watch
new Vue({
data:{
a:1,
b:[]
},
methods:{
doSomething:function(){
this.a++
}
},
watch:{
'a':function(val, oldVal){
console.log(val,oldVal)
}
}
})
watch字母上理解就是一个监听,这里面我们监听了a,这个a就是数据里面的a,比如doSomething里面进行了+1的变化,watch里面对应的监听方法就会自动的去执行,这里打印了新的值和旧的值,如果+1后,val就是2,oldVal就是1
介绍了上面三个选项,我们会想,这些要怎么跟页面进行联系,他们之间有一个粘合剂,就是模板指令,模板指令是写在html里面的,比如最常用的就是
数据渲染:v-text,v-html,{{}}
new Vue({
data:{
a:1,
b:[]
}
})
<p>{{ a }}</p>
<p v-text='a'></p>
<p v-html='a'></p>
这三个其实不能说是等价的,因为v-text是格式处理了html,v-html保存了html结构,但是无论如何这个a都是对应到数据源里面的a,当这个a通过doSomething这个方法进行自增的话,模板上的a会自动进行更新,所以这其实是运用模板的一个优势
控制模板隐藏:v-if,v-show
new Vue({
data:{
isShow:true
}
})
<p v-if='isShow'></p>
<p v-show='isShow'></p>
v-if,v-show就是控制这个元素的显示和隐藏,他们的差别是v-if直接不渲染这个dom元素,而v-show是通过css的display来进行隐藏,在代码里是可以看到这个dom元素的
渲染循环列表:v-for
new Vue({
items:[
{
label:'apple'
},{
label:'banana'
}
]
})
<ul>
<li v-for='item in items'>
<p v-text='item.label'></p>
</li>
</ul>
我们使用其他的框架大多都有列表多渲染方法,就是循环渲染,我们的数据源是上面的一个数组
事件绑定:v-on
new Vue({
methods:{
doThis:function(sth){
}
}
})
<button v-on:click='doThis'></button>
<button @click='doThis'></button>
时间绑定是很常用的一个东西,@click是v-on:click的简写模式,点击的时候去执行doThis这个方法,这个doThis是选项methods里面的东西,而不是data里面的,data主要一些固定的数据,操作数据的这个概念,method是页面中会使用到的一些方法
属性绑定: v-bind
<img v-bind:src='imageSrc'> <div :class='{red:isRed}'></div>
<div :class='[classA,classB]'></div>
<div :class='[classA,{classB:isB,classC:isC}]'></div>
v-bind是只对dom元素属性的一些操作,v-bind:src指的是src属性,给赋值imageSrc,v-bind最常用的是:class,:class是v-bind:class的简写方式,