简介
1 | |
首先引入Vue文件。div块里的
message变量与vuedata中的message变量相关联,改变data里message值就会同步改变页面的内容。注意在创建Vue实例后加上一个分号。message里的内容必须是单引号包含的,不能是双引号。
- var为声明变量
//是注释
基础特性
Vue实例和选项
在创建对象实例时,可以在构造函数中传入一个选项对象。选项对象包括挂载元素、数据、方法、生命周期钩子函数。
挂载元素
Vue实例中的el选项为实例本身提供挂载元素。定义挂载元素后接下来的全部操作都在该元素里进行,元素外部不受影响。
即el是绑定的由
id标识的div块,后续的实例操作也是仅仅操作那一个div,而不影响另外的div。
<div id="box" class="box"></div>
这里挂载元素有三种方式:el:'#box',el:'.box',el:'div'。
数据
使用data选项定义数据,数据可以绑定到实例对应的模板(即div)中。示例如下:
<div id="box">
<h1>网站名称:{{name}}</h1>
<h1>网站地址:{{url}}</h1>
</div>
<script type="text/javascript">
var vm = new Vue({
el : '#box',
data : {
name : 'ifunan',
url : 'www.ifunan.cn'
}
});
</script>
首选创建了一个Vue实例
vm,模板中{{name}}用于输出name属性值,{{url}}用于输出url属性值。即data数据与DOM进行了关联
- 放在双大括号标签内的文本称为绑定表达式
- 在创建Vue实例时,如果给data赋值一个对象,那么Vue实例会代理data对象中所有的属性。
当属性值发生变化,HTML视图也会发生相应变化。所以data对象中定义的属性称为响应式属性。示例如下:
1 | |
注:只有在对象实例里的数据才是响应式的。
方法
使用methods选项定义方法,示例如下:
1 | |
- 调用方法和使用data属性值相同,在div块里使用两个{{方法名}}包括住方法。
methods和data是平级的,所以在data写完后加上一个逗号,下面写方法。(data和methods在格式上有很多相似之处)- return写完后要加上一个分号
;
生命周期钩子函数
数据绑定
建立数据绑定后,数据和视图会相互关联,当数据发生变化时,视图会自动更新。
插值
文本插值
文本插值是数据绑定最基本的形式,双大括号标签{{}},示例如下:
1 | |
此处将{{name}}与data里的name属性进行了绑定,当name属性发生了变化,{{name}}也将一起发生变化
如果只渲染一次数据,可以使用单次插值:v-once指令,即在第一次插入文本后,当数据对象中属性值发生变化时,{{name}}并不会发生变化。示例如下:
<div id="box">
<h2 v-once>hello {{name}}</h2>
</div>
插入HTML(v-html指令)
在双大括号标签{{}}里的值会当作普通文本处理。如果想在标签里再插入一个HTML标签,可以使用v-html,示例如下:
1 | |
注意: v-html是在标签里使用等号;
标签使用双引号包含,而非双大括号
属性(v-bind指令)
先简单介绍一下HTML属性(标签和元素一个意思):
- 属性提供一个标签/元素的补充信息
- 属性总是在开始标签/元素中指定
- 属性以键值对形式出现,比如
键名="键值"
eg:<a href="http://www.baidu.com">This is a link</a>
在这里<a>是开始标签,</a>是结束标签;href=是标签<a>的属性
下面开始介绍vue的属性
要为HTML标签绑定属性,不能直接使用文本插值的方式。需要使用v-bind指令对属性进行绑定。示例如下:
1 | |
在上述例子中,使用v-bind绑定<a>标签的href属性,href属性的值将在data里面去寻找。
注:
v-bind:href可以缩写为:href;并且v-bind可以绑定任何属性
表达式
在双大括号标签中进行数据绑定时,标签中的内容可以是一个JavaScript表达式,示例如下:
1 | |
结果:20
真的
mjh my love
过滤器
简单的表达式可能无法实现需要经过复杂计算的数据绑定,这时可以使用过滤器进行处理。
过滤器作用:自定义的过滤器可以对文本进行格式化
使用过滤器的两种方法:
- 在双大括号插值标签中:
{{ message | myfilter }},第一个参数是绑定值,第二个参数是过滤器ID。 - 在v-bind指令中:
<div v-bind:id="rawId | formatID"></div>
定义过滤器的两种方法:
- 使用全局方法**Vue.filter()**定义
- 使用选项对象中的filters选项定义
Vue.filter()定义全局过滤器
使用全局方法Vue.filter()过滤器需要定义在创建Vue实例之前
Vue.filter('ID',function(){})
第一个参数: 过滤器的ID,为自定义过滤器的唯一标识,使用单引号括起来
第二个参数: 具体的过滤器函数,此函数以表达式的值作为第一参数,再将接收到的参数格式化为想要的结果。
过滤器中的function()的第一个参数,已经被规定死了,永远都是 过滤器管道符前面 传递过来的数据。示例如下:
1 | |
注:Vue.filter()里的过滤器ID需要单引号包括起来;里面每一句写完用分号
;结束
filters定义本地过滤器
- 在filters定义的过滤器包括过滤器名称和过滤器函数两部分,其中过滤器函数以表达式的值作为第一个参数。示例如下:
1 | |
多个过滤器可以串联使用,格式如下:
{{message | filterA | fileterB}}
首先message的值作为参数去执行filterA过滤器的规则,完成之后的结果作为参数再去执行filterB过滤器实质是一个函数,所以也可以接受额外的参数,格式如下:
{{message | filterA(arg1, arg2)}}
message的值作为第1个参数,arg1为第2个参数,arg2为第3个参数传递刚给过滤器filterA,示例如下:
1 | |
指令
- 绑定表达式:放在双大括号标签内的文本称为绑定表达式
- 指令是带有v-前缀的特殊属性,指令的值限定为绑定表达式
- 指令用于在绑定表达式的值发生改变时,将这种数据的变化应用到DOM上。以上三条示例如下:
<p v-if="show">ifunan</p>
还有一些指令语法略有不同,能接收参数和修饰符
参数
如v-bind指令、v-on指令能够接收一个参数。该参数位于指令和表达式之间,并用冒号分隔
v-bind指令示例如下:<img v-bind:src="imageSrc">
上述示例中,src即为参数,imageSrc即为表达式,通过v-bind指令将<img>元素的src属性与表达式imageSrc的值进行绑定修饰符
修饰符是在参数后面,以半角句点符号指明的特殊后缀。示例如下:<form v-on:submit.prevent="onSubmit"></form>
上述示例中,当提交表单时会调用event.preventDefault()方法阻止浏览器默认行为。


