1、总结一下v-text和v-html和插值表达式的差别
插值表达式
特点1、是不覆盖以前的内容
特点2、不能将内容解析为html格式
2、v-html属性
特点1是覆盖以前内容
特点2是能渲染html代码到标签中
3、v-text属性
特点1是覆盖以前内容
特点2是不能渲染html代码到标签中
2、创建一个vue对象并和视图进行绑定,然后在该div中分别用插值表达式、v-text、v-html获取到vm下data中的msg的值
<div id="app">
<!--1、{{}}插值表达式获取data内容,
特点1、是不覆盖以前的内容
特点2、不能将内容解析为html格式-->
<h3>{{msg}}</h3>
<h3>{{msg2}}</h3>
<!--2、v-html属性,
语法是:<标签名 v-html="data中的属性名"></标签名>
特点1是覆盖以前内容
特点2是能渲染html代码到标签中
-->
<div v-html="msg2"></div>
<!--3、v-text属性,
语法是:<标签名 v-text="data中的属性名"></标签名>
特点1是覆盖以前内容
特点2是不能渲染html代码到标签中
-->
<div v-text="msg2">======</div>
</div>
<!--导入vue.js-->
<script src="js/vue.js"></script>
<script>
//var obj = {}//{}表示字面量创建对象
/*创建一个变量叫vm,vm关联了el所指向的html代码{#app}和data中的内容,所以#app可以通过各种方式获取带data的数据*/
/*用new Vue创建一个vm对象并传了一个对象给他,传递的这个对象里面写了vm实例所需用到的数据*/
var vm = new Vue({
/*创建一个变量叫vm,vm关联了el所指向的html代码和data属性中的内容,所以#app下可以通过各种方式获取到data中的数据*/
el: '#app', //elemen的缩写
data: {
msg: 'Hello world.',
msg2:'<h1>msg2</h1>'
}
})
</script>
3、什么是MVVM模式,这样设计有什么优点
/*M V VM*/
/*M:model ,表示数据的存储者*/
/*V:view 视图 ,表示显示给用户看的html代码*/
/*VM:是一个M 和 V 的中间者,承担着监视器的责任,它能将M或V中的数据变化同步到另一 方*/
4、使用vue将下列data中cat的几条属性插入到页面之中
// 代码
var vm = {
el: '#app',
data: {
cat: {
name: '罗小黑',
age: 8,
desc: '是一只黑色的猫'
}
效果如下:
5、表情包无限加速,一键关闭功能改造
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="app">
<p>{{face}}</p>
<!--@click调用无参方法可以不写括号-->
<button @click="swim">动起来</button>
<button @click="stop">停下来</button>
</div>
<script src="js/vue.js"></script>
<script>
var vm = new Vue({
el: '#app', //element的缩写
data: {
time:200,
interval:null,
face:'→_→ →_→ →_→ →_→ →_→ →_→ →_→ →_→'
},
methods:{
swim(){
if(this.interval != null){
clearInterval(this.interval);
this.time -= 40;
}
this.interval = setInterval(() => {
var s = this.face;
var endstr = s[s.length - 1];
var startStr = s.substring(0,s.length - 1);//前闭后开
s = endstr + startStr;
this.face = s;
},this.time)
},
stop(){
clearInterval(this.interval);
this.interval = null;
//alert('stop');
}
}
})
</script>
</body>
</html>