引言:
这一节复习巩固这几节的内容,加强对经常出现的Vue语法的记忆
加油加油!
Vue
重新认识基本实例
当挂载点写为类,时默认会挂载到第一个此类上
1 2 3 4 5 6
| <div class="bg"> 你好{{msg}} </div> <div class="bg"> 你好{{msg}} </div>
|
1 2 3 4 5 6
| new Vue({ el:'.bg', data:{ msg:'Vue' } })
|
所以我们要用唯一的id来避免这种情况:
1 2 3 4 5 6 7 8
| <div id="app"> <div class="bg"> 你好{{msg}} </div> <div class="bg"> 你好{{msg}} </div> </div>
|
1 2 3 4 5 6
| new Vue({ el:'#app', data:{ msg:'Vue' } })
|
模板语法
Vue的基本结构
一个Vue主要由三个部分构成
- 样式style
- 模板template
- 脚本script
例如我们的Demo
- 样式
- 模板
1 2 3 4 5 6 7 8
| <div id="app"> <div class="bg"> 你好{{msg}} </div> <div class="bg"> 你好{{msg}} </div> </div>
|
- 脚本
1 2 3 4 5 6 7
| new Vue({ el:'#app', data:{ msg:'Vue' }
})
|
我们惯用的插入文本的方法就是用两个大括号
{{msg}}
这里面可以是表达式
{{count+1}}
还可以包含模板
{{template}}
当然如果template是一个标签语法,类似<div>hello</div>
的话
会直接打印出整个代码的内容, 如果我们只是想要它显示div
内部的内容
那么我们需要加一个v-html=
v-bind
给页面的元素绑定一个值
v-on
绑定某一个事件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <div id="app"> {{msg}}
{{count+1}}
{{template}}
<a :href='url'>百度</a>
<button @click='sum()'>加</button>
<div v-html="template"></div> </div>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| new Vue({ el:'#app', data:{ msg:'Vue', count:0, template: '<div>你好啊</div>', url:'http://www.baidu.com' }, methods:{ sum(){ return this.count++ } } })
|
计算属性与侦听器
计算属性computed
侦听器 watch
1 2 3 4 5 6 7
| <div id="app"> {{msg}} <br> {{msg1}} <br> {{another}} </div>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| var vm=new Vue({ el:'#app', data:{ msg:'hello', another:'另一个' }, computed:{ msg1(){ return 'computed: '+this.msg+this.another; } }, watch:{ msg:function (newValue,oldValue) { console.log('新的值'+newValue); console.log('旧的值'+oldValue); console.log('另一个值'+this.another) } } })
|
区别:
watch经常用在异步场景中
compute数据联动
条件渲染,列表渲染,Class与Style绑定
v-if,v-else-if,v-else
真值渲染
不再举例
v-for
1 2 3 4 5 6 7 8 9 10
| <div id="app"> <div v-for='(item,index) in list' :key="index" :style='msgStyle' > {{item.name}} {{item.age}} </div> </div>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| var vm=new Vue({ el:'#app', data:{ msg:'hello', list:[ { name:'A', age:32 },{ name:'B', age:20 } ], msgStyle:{ color:'red', fontSize: 20+'px' } },
})
|