<style>
[v-cloak] {
display: none;
}
</style>
<body>
<!--{{}} 这个是插值表达式,使用v-cloak,再给定一个display:none,能够解决在F12-Network-slow3G 下{{}}出现闪烁的问题-->
<div id="app">
<p v-cloak>{{msg}}</p>
<!--v-text 后面跟data,能够不使用插值表达式 同时v-text是没有闪烁的问题的-->
<!--v-text会覆盖元素中本来的内容,可是插值表达式 只会替换本身的占位符,不会把 整个元素的内容所有清空-->
<h4 v-text="msg2"></h4>
<div v-html="msg2"></div>
<!--v-bind: 是Vue中提供的用于绑定属性的命令-->
<input type="button" value="按钮" v-bind:title="mytitle" v-on:click="show1">
</div>
<script>
var vm = new Vue({
el: "#app",
data: {
msg: "123",
msg2:"<h1>这是一个很大的h1</h1>",
mytitle:"这是一个本身定义的title"
},
methods: {
show1:function () {
alert("Hello")
}
}
})
</script>
复制代码
v-bind是Vue提供的属性绑定机制,简写为 :html
常见的状况是,src属性,若是直接给src一个图片的连接地址,那么会把src后面的当成一个字符串处理。vue
<div id="app">
<input type="text" v-model="msg"> <p>Hello{{msg}}</p> <img src="imgUrl" alt=""></div>//这种会当作字符串处理,想要引用,必须使用v-bind属性绑定机制 <img :src="imgUrl" alt=""></div> <script> const vm = new Vue({ el: '#app', data: { msg: 'Vue...', imgUrl: 'https://pics1.baidu.com/feed/e824b899a9014c08235e06b0789f460d7af4f4a3.jpeg?token=b81b371198390d35dfca4c7701405c49&s=B481B557D08F5EEE084DB46B03003070' } }) </script> 复制代码
v-on是Vue提供的事件绑定机制,常见的有click,dbclick,mouseover,mouseout,mouseenter,mouseleave等;可是要在后面加一个methods 能够参考下面代码块数组
<body>
<div id="app"> <p>{{msg}}</p> <input type="button" value="按钮" v-bind:title="mytitle" v-on:click="show"> </div> <script> var vm = new Vue({ el: "#app", data: { msg: "123" }, methods: { show:function () { alert("Hello") } } }) </script> 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>事件修饰符</title>
<script src="lib/vue-2.4.0.js"></script>
<style>
#app {
width: 100%;
height: 100px;
background-color: pink;
}
</style>
</head>
<body>
<div id="app">
<!--stop阻止事件冒泡-->
<!--<div @click="divHanlder">
<input type="button" id="inner" value="inner按钮" @click.stop="btnHanlder">
</div>-->
<!--prevent 阻止事件的默认行为-->
<a href="http://www.baidu.com" @click="linkClick">有问题,先百度</a>
</div>
<script>
var vm =new Vue ({
el:"#app",
data:{},
methods:{
divHanlder(){
console.log("这是出发了div的事件");
},
btnHanlder(){
console.log("这是出发了btn的事件");
},
linkClick (){
console.log("有问题,先百度")
}
}
})
</script>
</body>
</html>
复制代码
<body>
<div id="app"> <!--v-bind 能够实现属性的绑定,可是绑定数据是单向的,这里可使用v-model进行数据的双向绑定--> <h4>{{msg}}</h4> <input type="text" style="width: 100%;" v-model="msg"> </div> <script> var vm=new Vue({ el:"#app", data:{ msg:"v-model实现数据的双向绑定" } }) </script> 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>简易计算器</title>
<script src="lib/vue-2.4.0.js"></script>
</head>
<body>
<div id="app">
<input type="text" v-model="n1">
<select v-model="opt">
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
<input type="text" v-model="n2">
<input type="button" value="=" @click="clac">
<input type="text" v-model="result">
</div>
<script>
var vm = new Vue({
el: "#app",
data: {
n1: 0,
n2: 0,
result: 0,
opt: "-"
},
methods: {
clac() { //计算器算术方法
// 逻辑
switch (this.opt) {
case "+":
this.result=parseInt(this.n1)+parseInt(this.n2)
break;
case "-":
this.result=parseInt(this.n1)-parseInt(this.n2)
break;
case "*":
this.result=parseInt(this.n1)*parseInt(this.n2)
break;
case "/":
this.result=parseInt(this.n1)/parseInt(this.n2)
break;
}
}
}
})
</script>
</body>
</html>
复制代码
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Vue中的样式操做-class</title>
<script src="lib/vue-2.4.0.js"></script>
</head>
<style>
.thin {
font-style: italic;
}
.active {
color: red;
}
</style>
<body>
<div id="app">
<!--第一种使用方式,直接传递一个数组,注意:这里的class须要使用v-bind进行单向的数据绑定,下面的:就是使用的v-bind的缩写,数组里面的class须要使用单引号-->
<!--<h1 :class="['thin']">这是一个很大的h1,很大很大,大到你没法想象</h1>-->
<!--在数组中使用对象来带起三元表达式,提升代码的可读性-->
<!--<h1 :class="['thin',{'active':flag}]">这是一个很大的h1,很大很大,大到你没法想象</h1>-->
<!--在为class使用v-bind绑定对象的时候,对象的属性是类名,在这种状况下属性也就是类名,能够带引号,也能够不带引号;属性的值是个标识符-->
<h1 :class="{'thin':true,'active':true}">这是一个很大的h1,很大很大,大到你没法想象</h1>
</div>
<script>
var vm=new Vue ({
el:"#app",
data:{
flag:true
},
methods:{
}
})
</script>
</body>
</html>
复制代码
<h1 :style="{'color':'green','font-weight':'700'}">这是一个很大的h1,很大很大,大到你没法想象</h1>
复制代码
<h1 :style="objStyle">这是一个很大的h1,很大很大,大到你没法想象</h1>
var vm=new Vue ({
el:"#app",
data:{
objStyle:{'color':'red','font-weight':'400'}
},
methods:{
}
})
复制代码
经过数组的方式添加多个对象,不能使用{},须要使用[]服务器
<h1 :style="[objStyle1,objStyle2]">这是一个很大的h1,很大很大,大到你没法想象</h1>
<script>
var vm=new Vue ({
el:"#app",
data:{
objStyle:{'color':'red','font-weight':'400'},
objStyle1:{'color':'red','font-weight':'400'},
objStyle2:{'font-size':"12px"}
},
methods:{
}
})
</script>
复制代码
<div id="app">
<p v-for="item in list">{{item}}</p>
</div>
<script>
var vm =new Vue({
el:"#app",
data:{
list:[1,2,3,4,5,6,7,8]
},
methods:{
}
})
</script>
复制代码
<div id="app">
<p v-for="usr in list">ID:{{usr.id}}---名字:{{usr.name}}</p>
</div>
<script>
var vm =new Vue({
el:"#app",
data:{
list:[
{id:1,name:"zs1"},
{id:2,name:"zs2"},
{id:3,name:"zs3"},
{id:4,name:"zs4"},
{id:5,name:"zs5"},
{id:6,name:"zs6"},
{id:7,name:"zs7"}
]
},
methods:{
}
})
</script>
复制代码
<div id="app">
<p v-for="(val,key,i) in user">值是:{{val}}---键是:{{key}},索引:{{i}}</p>
</div>
<script>
var vm =new Vue ({
el:'#app',
data:{
user:{
id:1,
name:'托尼',
gender:'男'
}
},
methods:{
}
})
</script>
复制代码
<div id="app">
<p v-for="qqq in 10">这是第{{qqq}}次循环</p>
</div>
<script>
var vm =new Vue ({
el:'#app',
data:{
},
methods:{
}
})
</script>
复制代码
<div id="app">
<!-- v-if 每次都会删除元素,而后从新建立元素 v-show 每次不会从新进行DOM的删除和建立操做,只是切换属性,将display设置成none v-if 有较高的切换性能,v-show 有较高的初始渲染消耗,若是涉及到元素的频繁切换,最好不要使用v-if,使用v-show --> <input type="button" value="toggle" @click="flag=!flag"> <h3 v-if="flag">这是一个v-if控制的元素</h3> <h3 v-show="flag">这是一个v-show控制的元素</h3> </div> <script> var vm = new Vue({ el: '#app', data: { flag: true }, methods: { // toggle() { // this.flag = !this.flag // } } }) </script> 复制代码