标签:splay none ges name 性能 created date 打印 function
<div id="exp">
<div @click="handleClick">{{content}}</div>
</div>
</body>
<script>
var vm = new Vue({
// el限制一个vue实例的管理范围。
el:"#exp",
data:{
content:"hello world"
},
methods:{
handleClick:function () {
alert(this.content)
}
}
});
</script>
// vm为一个实例,当执行vm.$destory()就会销毁这个实例。这样通过修改数据vm.$data.message = "123",
页面不会有相应的变化
<div id="app"></div>
<script>
var vm = new Vue({
el:"#app",
template:`<div>{{test}}</div>`,
data:{
test:"hello world"
},
// vue实例进行基本初始化之后会被执行
beforeCreate:function () {
console.log("beforeCreate");
},
// 初始化一些外部注入,和双向绑定,当此类操作完成会调用created
created:function () {
console.log("created");
},
// 在template页面挂载之前执行函数
beforeMount:function () {
// 此时this.$el 还没有被渲染
console.log("beforeMount");
},
// 页面渲染完执行周期函数mounted
mounted:function () {
// 此时this.$el 已经被渲染了,
console.log("mounted");
},
// 当调用vm.$destroy(),即将被销毁时候会执行
beforeDestroy:function () {
console.log("beforeDestory");
},
// 当前实例被销毁会被调用
destroyed:function () {
console.log("destroyed");
},
// 数据发生改变,vm.test='123'还没有重新渲染数据会被执行
beforeUpdate:function () {
console.log("beforeUpdate");
},
// 重新渲染数据会被执行vm.test='123'
updated:function () {
console.log("updated");
}
})
</script>
<div id="exp">
{{name}}
</div>
或
<div>{{"my name is "+name}}</div>
<script>
var vm = new Vue({
// el限制一个vue实例的管理范围。
el:"#exp",
data:{
name:"James"
}
});
</script>
<div v-text="name"></div>
或
<div v-text="'my name is ' + name"></div>
<script>
var vm = new Vue({
// el限制一个vue实例的管理范围。
el:"#exp",
data:{
name:"James"
}
});
</script>
<div v-html="name_html"></div>
var vm = new Vue({
// el限制一个vue实例的管理范围。
el:"#exp",
data:{
name_html:"<h1>James</h1>"
}
});
var vm = new Vue({
el:"#exp",
data:{
firstName:"Dell",
lastName:"Lee"
age:20
},
computed:{
fullName:function () {
console.log("计算一次")
return this.firstName + " " + this.lastName
}
}
});
计算属性
更加高效:methods:{
fullName:function () {
return this.firstName + " " + this.lastName
}
},
watch:{
firstName: function () {
this.fullName = this.firstName + " " + this.lastName
},
lastName: function () {
this.fullName = this.firstName + " " + this.lastName
},
},
computed:{
fullName:{
// 当取 fullName 会执行此方法
get:function () {
return this.firstName + " " + this.lastName
},
// 当设置fullName 会执行此方法
set:function (value) {
var arr = value.split(" ");
this.firstName = arr[0];
this.lastName = arr[1];
console.log(value)
}
}
}
<style>
.activated {
color:red;
}
</style>
<div id="exp">
<div @click="handleDivClick" :class="{activated:isActivated}">{{text}}</div>
</div>
<script>
var vm = new Vue({
// el限制一个vue实例的管理范围。
el:"#exp",
data:{
text:"hello world",
isActivated:false
},
methods:{
handleDivClick:function () {
this.isActivated = ! this.isActivated
}
}
});
<div id="exp2">
<div @click="handleDivClick" :class="[activated,]">{{text}}</div>
</div>
var vm2 = new Vue({
// el限制一个vue实例的管理范围。
el:"#exp2",
data:{
text:"hello world",
activated:""
},
methods:{
handleDivClick:function () {
this.activated = this.activated === "activated" ? "" : "activated"
}
}
});
<div id="exp3">
<div @click="handleDivClick" :style="styleObj">{{text}}</div>
</div>
<script>
var vm3 = new Vue({
// el限制一个vue实例的管理范围。
el:"#exp3",
data:{
text:"hello world",
styleObj:{
color:"black"
}
},
methods:{
handleDivClick:function () {
this.styleObj.color = this.styleObj.color === "black" ? "red" : "black";
}
}
});
</script>
<div @click="handleDivClick" :style="[styleObj,{fontSize:'40px'}]">{{text}}</div>
<div v-if="show">{{message}}</div>
<div v-show="show">{{message}}</div>
var vm = new Vue({
// el限制一个vue实例的管理范围。
el:"#exp",
data:{
show:false,
message:"hello world"
}
});
<div id="exp">
<div v-if="show">{{message}}</div>
<div v-else>Bye world</div>
</div>
<div id="exp">
<div v-if="show === 'message'">{{message}}</div>
<div v-else-if="show ==='count'">1</div>
<div v-else>Bye world</div>
</div>
<div id="app">
<div v-if="show">
用户名: <input type="text" key="username">
</div>
<div v-else>
邮箱名: <input type="text" key="email">
</div>
</div>
<script>
//每个元素标签设置一个key值, 表示它是唯一标签,如果2个key不一样则不会服用原来元素标签
// 虚拟dom算法用的内容
var app = new Vue({
el:"#app",
data:{
show:false
}
})
</script>
<div id="exp">
<div v-for="(item,index) of list">
{{item}}------{{index}}
</div>
</div>
var vm = new Vue({
// el限制一个vue实例的管理范围。
el:"#exp",
data:{
list:[
"hello,",
"James",
"nice",
"to",
"meet",
"you"
]
}
});
<div v-for="(item,index) of list" :key="index">
list:[
{id:001102,text:"hello"},
{id:029303,text:"James"},
......
]
<div v-for="(item,index) of list" :key="item.id">
当我们操作数组时,不能通过下标方式添加数组如:list[i]={id:03957569,text="bye"}
,只能通过vue中提供方式如下:
push
pop
shift
unshift
splice
sort
reverse
改变数组的引用
模板占位符,通过模板占位符可以帮助我们包裹一些元素,但是在循环过程中,并不会真正被渲染到页面上。
数组的循环
<template v-for="(item,index) of list"
:key="item.id">
<div>
{{item.text}}
</div>
<span>
{{index}}
</span>
</template>
<div id="app">
<div v-for="(item,key,index) of userInfo">
{{item}}---{{key}}---{{index}}
</div>
</div>
<script>
var app = new Vue({
el:"#app",
data:{
userInfo:{
name:"James",
age:28,
gender:"male",
salary:"secret"
}
}
});
</script>
//app为一个实例
app.$set(app.userInfo,"address","beijing")
vm.$set(vm.list,2,"wawawawaw")
改变数组中数据方式
改变数组的引用
使用数组的变异方法
set方法
改变对象中数据方式
改变对象的引用
set方法
标签:splay none ges name 性能 created date 打印 function
原文地址:https://www.cnblogs.com/xujunkai/p/12229978.html