Vue.js
Vue.js
1.Vue实列
1.挂载元素
2.数据
3.初始值
name:'',
count:0,
price:[],
flag:true
1.创建Vue实列
实列:
<script src="./vue.js"></script> //1.导入vue.js
<div class="box"> //2.1挂载数据
<h3>NetWeb:{{name}}</h3>
<h3>NetWebURl:{{url}}</h3>
</div>
<script type="text/javascript">
var demo = new Vue({
el:'.box',
//2.2挂载数据代入
data:{ // 3.数据
name:'Neoction School',
url:'www.NeoctionSchool'
}
})
</script>
2.重新设置Vue实列
—–data属性传入Vue实列
//设定的data数据
var data={name:'Holle,Java',url:'www.java.org.com'};
//创建数据 Vue实列,自动代理 data对象
var demo=new Vue({
el:'.box',
// 导入已存在的数据data
data:data
});
//锚定对象
//将自定义数据data的url属性赋值给Vue实列的name
demo.name=data.name;
//重新设置属性
demo.url='httpa://www.java.org.com';
3.$ 区分符
——vue实列对象与用户定义属性的区分
demo.$data=data;
4.方法(methods)
<div class="box">
<h3>{{showInfo()}}</h3>
</div>
//设定的data数据
var data={name:'Holle,Java',url:'www.java.org.com'};
//创建数据 Vue实列,自动代理 data对象
var demo=new Vue({
el:'.box',
// 导入已存在的数据data
data:data,
// {name:'Holle,Java',url:'www.java.org.com'},
methods:{
showInfo:function(){
return this.name+":"+this.url
}
}
});
demo.$data=data;
注意:
1.调用方法带()
2.methods方法放入{}内部
3.该方法有异常问题
5.生命周期钩子函数
每一个Vue实列创建都有一系列的初始化步骤,通过这些钩子函数可以定义业务逻辑
- beforeCreate:在Vue实列开始初始化时调用
- created:在实列创建之后进行调用,此时尚未开始DOM编译
- mounted:在DOM文件渲染后进行调用(类似window.onload() )
- beforeDestroy:在销毁实列前调用,此后实列任然有效
- destroyed:在实列销毁后进行调用
钩子函数:function(){ },
2.数据绑定
Vue.js 最核心的特性之一。建立数据绑定之后数据和视图会相互关联,当数据发生变换时,视图会自行进行更新。
1.插值
1. 文本插值
1.插值
文本插值是最基本的形式
2.v-once
单词插值,当数据对象的属性值发生变换时,插入的文本将不会更新
注意:
- v-once在标签内,不需要挂载属性
- 需要 插值 传入引用数据
2.插入HTML
因为 插值 会将值作为普通文本处理,输出HTML内容需要v-html
实列:
<div class="box">
<p v-html="message"></p>
</div>
<script type="text/javascript">
var demo=new Vue({
el:".box",
data:{
message:'<h1>Java,the best language in the world.</h1>'
}
})
</script>
注意:
1.v-html在标签内,挂载data数据的属性
2.不需要 插值 来引用数据
3.属性
因为 插值 不能应用在html属性中。
要为html元素绑定属性,不能直接使用文本插值的方式,而需要v-bind指令对属性进行绑定。
1.为html属性绑定 class
为html元素绑定class属性(css)
1.实列一
将标签的class属性和数据对象的value属性进行绑定
// html 显示
<div class="box">
// 声明 v-bind 调用js文件的class的value值。
<span v-bind:class="value">Dream fall in truly。</span>
</div>
// js 实现
<script type="text/javascript">
var demo=new Vue({
el:".box",
data:{
// 实现的css样式,在css池中定义
value:'title'
}
});
</script>
// css 样式池
<style type="text/css">
.title{
color: #ff0000;
border: 1px solid #FF00FF;
display: inline-block;
padding: 5px;
}
</style>
2.实列二
应用v-bind指令将<\span>标签的class属性与数据对象中的value属性进行绑定,并判断title的值,如果title的值为true,则使用title;否则不适用该类
//html显示
<div class="box">
<span v-bind:class="{'title':value}">Dream fall in truly。</span>
</div>
//js 实现
<script type="text/javascript">
var demo=new Vue({
el:".box",
data:{
value:true
}
});
</script>
//css样式池
<style type="text/css">
.title{
color: #ff0000;
border: 1px solid #FF00FF;
display: inline-block;
padding: 5px;
}
</style>
注意:
1.v-bind:class=”{ ‘title’:value} ” 需要 {} 和实列一不同点
4.表达式
给数据提供简写方式:
列:
<a v-bind:href="url">明日学院</a>
<!-- 简写 -->
<a :href="url">明日学院</a>
列:
<div id="box">
QQ:{{email.substr(0,email.indexOf('@'))}}
<br />
e-mail:{{email}}
</div>
<script type="text/javascript">
var demo=new Vue({
el:'#box',
data:{
email:'4006751066@qq.com'
}
});
</script>
2.过滤器
对于一些需要经复杂计算的数据绑定,简单的表达式无法实现。
vue.js的过滤器进行处理,可通过自定义的过滤器对文本进行格式化。
过滤器可以在 插值 和 v-bind 指令中,过滤器需要被添加在JavaScript表达式的尾部,由管道符号 “|” 表示。
格式:
<!-- 在 插值 中 -->
{{message | myfilter}}
<!-- 在v-bind指令中 -->
<div v-bind:id="rawId | formatId"></div>
定义过滤器的两种方式:
- 第一种:
应用Vue.js全局变量 Vue.filter()Vue.filter( ID,function(){ } )
- 第二种:
选项定义本地过滤器 filter:{}
注意:<a id="A">{{title | subStr}}</a> <script> new Vue({ el:"A", data:{ title:"这个String的长度" }, filter:{ subStr:function(value){ if(value.length > 10){ return value.subStr(0,10)+"..."; }else{ return value; } } } }); </script>
1.多个过滤器可以串联使用,在filter:{} 中的本地方法可以通过写在插值后 用|隔开。
2.过滤器实质是一个方法,可以将参数传入设定的方法
3.指令
解释:
v-bind: 、v-on: 等为指令
- 参数
解释:
在指令和表达式之间,用冒号分隔开的<img v-bind:src="imgsrc"> # img标签的 src 属性 <button v-on:click="login">登录</button> # 监听的事件名称 click
- 修饰符
解释:
在参数后面,以半角句点符号指明的特殊后缀。
列:
解释:# .prevent 修饰符用于调用 event.preventDefault() 方法。 <form v-on:submit.prevent="onSubmit"></form>
当提交表单时会调用event.preventDefault()方法 用于阻止浏览器的默认行为。
3.列表渲染
1.数组更新
Vue.js 有包含检测数组变化的变异方法,调用时可以改变原始数据,并触发试图更新。
方法名 说明
push() 像数据的末尾添加一个或多个元素
pop() 将数组的最后一个元素从数组中删除
shift() 将数组的第一个元素从数组中删除
unshift() 向数组的开头添加一个或多个元素
splice() 添加或删除数组中的元素
sort() 对数组的元素进行排序
reverse() 颠倒数组中元素的顺序
filter()
concat()
slice() 获取数组该索引开始的元素
列:
var demo = new Vue({
el: '#box',
data: {
items:[ //定义人物名称数组
{name:'张三'},
{name:'李四'}
]
}
})
// 向数组末尾添加数组元素
demo.items.push({name:'赵六'});
2. 添加对象属性
Vue.set() vuedemo.$set() Object.assign()
1.单列属性
Vue.set(demo.items, 1, {name:'李三'});
或
vuedemo.$set(demo.items, 1, {name:'李三'});
2.多列属性
vuedemo.items = Object.assign(
{},
vuedemo.items,
{
interest: "Sing",
address: "BeiJing"
}
);