vue.js官网教程学习笔记和学习摘要
起步
安装
一个简单的方法,直接把一个vue.js引入你的HTML页面中,就像引入一个jq框架一样,首先你要下载js文档,然后用script标签把它引进去,然后在
vue.js官网教程学习笔记和学习摘要
一个简单的方法,直接把一个vue.js引入你的HTML页面中,就像引入一个jq框架一样,首先你要下载js文档,然后用script标签把它引进去,然后在
之前写一个
双大括号内的文本称为绑定表达式,绑定表达式由一个简单的JavaScript表达式和可选的一个或者多个过滤器构成。
{{ number + 1 }}
{{ ok ? 'YES' : 'NO' }}
{{ message.split('').reverse().join('') }}
tip:每个绑定只能包含单个表达式
{{ var a = 1 }}
{{ if (ok) { return message } }}
{{ message | capitalize }}//message的值通过过滤器capitalize,capitalize过滤器的作用是变换成大写,所以message的值通过过滤器capitalize的结果是返回大写化的值
tip:管道语法不是JavaScript语法,因此不能在表达式内使用过滤器,只能添加到表达式的后面。
过滤器可以串联:{{ message | filterA | filterB }
前缀:“v-”
指令的值:“绑定表达式”(JavaScript表达式、过滤器)
指令的职责:表达式的值改变式把某些特殊行为应用到DOM上
eg:
Hello!
这里,v-if是一个指令,指令的值是表达式“greeting”的值,如果值为真,就插入< p>元素,如果是假,就删除< p>元素。
//v-bind 指令用于响应地更新 HTML 特性,href是参数,它告诉v-bind指令将元素的href特性跟表达式url的值绑定
//v-on 指令,它用于监听 DOM 事件
//.literal 修饰符告诉指令将它的值解析为一个字面字符串而不是一个表达式
v-on的缩写
eg:
eg:
var vm = new Vue({
el: '#example',
data: {
a: 1
},
computed: {
// 一个计算属性的 getter
b: function () {
// `this` 指向 vm 实例
return this.a + 1//b的值是计算出来的,依赖于a的值
}
}
})
{{fullName}}
var vm = new Vue({
el: '#demo',
data: {
firstName: 'Foo',
lastName: 'Bar'
},
computed: {
fullName: function () {
return this.firstName + ' ' + this.lastName
}
}
})
computed: {
fullName: {
// getter
get: function () {
return this.firstName + ' ' + this.lastName
},
// setter
set: function (newValue) {
var names = newValue.split(' ')
this.firstName = names[0]
this.lastName = names[names.length - 1]
}
}
}
调用vm.fullName = 'John Doe' 时,setter会被调用,为firstName和lastName赋值,'John Doe' 传给参数newValue,var names = newValue.split(' ')将newValue以’ ‘为分隔符分隔为一个数组储存在names里面,所以names[0]的值为John,names[names.length - 1]即names[1]的值为Doe,然后getter被调用,为fullName计算值。
v-bind:class 指令可以与普通的 class 特性共存
eg:
data: {
isA: true,
isB: false
}
class-a是一个类名,class-b也是一个类名,通过data的isA和isB设置是否为元素绑定相应的类。渲染为:
也可以直接绑定一个对象
data: {
classObject: {
'class-a': true,
'class-b': false
}
}
data: {
classA: 'class-a',
classB: 'class-b'
}
渲染为:
也可以:
始终添加classA类,如果isB为true,就添加classB类,如果isB为false,就不添加classB。
也可以:
eg:
始终添加classA类,根据isB的值选择是否添加classB,根据IsC选择是否添加classC。
绑定内联样式
- 对象语法
v-bind:style 的对象语法:
eg:
data: {
activeColor: 'red',
fontSize: 30
}
直接绑定到一个样式对象通常更好:
data: {
styleObject: {
color: 'red',
fontSize: '13px'
}
}
- 数组语法
v-bind:style 的数组语法可以将多个样式对象应用到一个元素上:
条件渲染
- v-if
eg:
Yes
如果v-if的属性值——“ok”表达式的值为真,则显示“yes”,否则不显示“yes”。
eg:
Yes
No
如果v-if的属性值——“ok”表达式的值为真,则显示“yes”,否则不显示v-else对应的语句“No”。
- template v-if
如果想用v-if同时显示或者隐藏多个元素,可以用将多个元素包裹起来。把一个 元素当做包装元素,并在上面使用 v-if,最终的渲染结果不会包含它。
eg:
Title
Paragraph 1
Paragraph 2
tip:官网教程页没有详细说明v-if的用法,因此我在学习时使用v-if写的例子出现了问题:
首先,一开始我以为代码是这样写的:
然而,虽然“ok”值为false,但是仍然显示:
控制台报错:
这个报错是说:v-if不可以用于根元素。
应将代码更正为:
即可以用一个< div>将带有v-if的元素包裹起来,这时候控制台就不会报错了。
同样地,使用包裹多个元素时,,也要用一个< div>将带有v-if的包裹起来。
代码:
显示效果:
- v-show
用法大体和v-if一样:
eg:
try
haha