语法:{{要插入的值}}
此时相当于占位符,到时候{{关键字}}会被替换成Model中的数据
注意点:
针对上面出现的问题,引出了v-clock指令 {{msg1}}
此指令是把它当作HTML元素的一个属性使用
示例:
特点:
当Vue加载完毕后,v-cloak属性会自动消失。
运行机理:
等同于添加了如下CSS样式:让所有带v-cloak属性的元素隐藏,Vue加载完成后显示实现,以解决使用插值表达式闪烁的问题:
[v-cloak]{
display: none;
}
语法:
作用:和插值表达式一样,用于给HTML元素添加文本
区别:
相同点:
4. 插值表达式和v-text都可以给HTML元素显示文本
5. 插值表达式和v-text都不会解析要添加文本中的HTML标签(原样显示)
示例:
<html lang="en">
<head>
<meta charset="UTF-8">
<title>测试title>
head>
<body>
<div id="app">
<p v-cloak>{{msg}}p>
<p v-text="msg1">p>
div>
<script src="../lib/vue.js" type="application/javascript">script>
<script>
var vm=new Vue({
el:"#app",
data:{
msg:"hello,vue",
msg1:"hello"
}
})
script>
body>
html>
思考一个问题:要是我们在data中写一段html代码,那么替换到上面的div中,会被解析吗?
<html lang="en">
<head>
<meta charset="UTF-8">
<title>测试title>
head>
<body>
<div id="app">
<p v-cloak>{{msg}}p>
<p v-text="msg1">p>
<p v-html="msg2">p>
div>
<script src="../lib/vue.js" type="application/javascript">script>
<script>
var vm=new Vue({
el:"#app",
data:{
msg:"hello,vue",
msg1:"hello",
msg2:"这是用来测试v-html指令的...
"
}
})
script>
body>
html>
结果:(可以看到这里确实将msg2中写入的代码进行了解析并展示了出来)
接下来我们再来看一种绑定字符串的方式…
语法:在HTML元素的属性目前加上绑定标识,此时HTML的该属性的值就会根据属性值的名字从Model中获取数据 用户名:
示例:
注意:
xmlns:v-bind="http://www.w3.org/1999/xhtml"
,使用:就可以不用导入了…
<html lang="en"
xmlns:v-bind="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>测试title>
head>
<body>
<div id="app">
<p v-cloak>{{msg}}p>
<p v-text="msg1">p>
<p v-html="msg2">p>
用户名:<input type="text" name="username" v-bind:value="msg" />
用户名:<input type="text" name="username" :value="msg" />
用户名:<input type="text" name="username" v-bind:value="msg+'你好'" />
用户名:<input type="text" name="username" :value="msg+msg1" />
div>
<script src="../lib/vue.js" type="application/javascript">script>
<script>
var vm=new Vue({
el:"#app",
data:{
msg:"hello,vue",
msg1:"hello",
msg2:"这是用来测试v-html指令的...
"
}
})
script>
body>
html>
接下里我们看看如何绑定方法…
解释:在HTML的事件属性(属性名不带on)前加上绑定标识,此时HTML触发此事件时,会执行事件中绑定的代码
示例:
注意:
xmlns:v-on="http://www.w3.org/1999/xhtml"
,使用@就不用导入命名空间了…示例:
<html lang="en"
xmlns:v-bind="http://www.w3.org/1999/xhtml"
xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>测试title>
head>
<body>
<div id="app">
<p v-cloak>{{msg}}p>
<p v-text="msg1">p>
<p v-html="msg2">p>
用户名:<input type="text" name="username" v-bind:value="msg" />
用户名:<input type="text" name="username" :value="msg" />
用户名:<input type="text" name="username" v-bind:value="msg+'你好'" />
用户名:<input type="text" name="username" :value="msg+msg1" />
<br/>
<hr/>
<button v-on:click="vueTest1()">点击有惊喜1button>
<button @click="vueTest2()">点击有惊喜2button>
div>
<script src="../lib/vue.js" type="application/javascript">script>
<script>
var vm=new Vue({
el:"#app",
data:{
msg:"hello,vue",
msg1:"hello",
msg2:"这是用来测试v-html指令的...
"
},
methods:{
vueTest1:function () {
alert("你好!");
},
vueTest2:function () {
alert("你好!");
}
}
})
script>
body>
html>
唯一的一个实现双向数据绑定的指令
语法:
双向绑定:
model层数据的改变会影响view层HTML结果
HTML中表单元素值的改变会写入对应的model层的数据中
示例:通过双向绑定v-model指令实现一个简易的计算器
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue中的双向数据绑定指令v-modetitle>
<script src="../lib/vue.js" type="text/javascript">script>
head>
<body>
<div class="box">
<h1>Vue中的双向数据绑定指令v-modeh1>
<label>单价:<input type="text" v-model="price">label><br/>
<label>数量:<input type="text" v-model="num">label><br/>
<button @click="calc()">点击计算总价button><br/>
<label>总价:<span style="color:deeppink" v-text="sum">span>label>
<hr/>
<h1>使用v-mode双向数据绑定实现建议计算器h1>
<label>操作数1:<input type="text" v-model="num1" />label>
<select v-model="opr">
<option value="+">+option>
<option value="-">-option>
<option value="*">xoption>
<option value="/">/option>
select>
<label>操作数1:<input type="text" v-model="num2" />label>
<button @click="doCalc()">=button>
<span style="font-size: 20px;color:deeppink" v-text="result">span>
div>
<script type="text/javascript">
var vm2 = new Vue({
el:".box",
data:{
price:12,
num:1,
sum:12,
num1:'0',
num2:'0',
opr:'+',
result:0
},
methods:{
calc(){
this.sum = this.price*this.num;
},
doCalc(){
this.result = eval("parseInt(this.num1)"+this.opr+"parseInt(this.num2)");
}
}
});
script>
body>
html>
结果:
知识点:
JavaScript的eval()方法可以把一个字符串当作JavaScript代码执行,并返回执行结果,如:
this.result = eval("parseInt(this.num1)"+this.opr+"parseInt(this.num2)");
注意:
当代码很复杂或难以控制时可以使用此方法,上面代码中会包含太多的判断,因此使用了eval()方法,大多数还是使用标准方法执行JavaScript代码
{{name}}
id:{{user.id}}---name:{{user.name}}
{{key+'--'+value}}
总结:
v-for="xxx in xxx"
注意
注意:
技巧:一般使用对象中的值唯一属性(主键)作为key,比如id
语法:
看不懂key和value?看看下面的代码
<script type="text/javascript">
var vm = new Vue({
el:"#app",
data:{
names:["张三","李四","王五","赵六","田七"],
users:[
{id:1,name:"胡歌",age:32},
{id:2,name:"袁弘",age:33},
{id:3,name:"霍建华",age:35}
],
allClass:{no:"年级",classteacher:"班主任",classnum:["重点班","实验班","普通版","火箭班"]
}
}
});
script>
解释:
知识点
this.users.push({id:this.id,name:this.name,age:this.age});
this.users.unshift({id:this.id,name:this.name,age:this.age});