Vue初学习(一)
一、声明式渲染
<div id="app">
{{ message }}
</div>
<script>
let app = new Vue({ //创建Vue实例
el:"#app",//选择器
data:{ //初始化数据
message:"hello world"
}
})
</script>
输出hello world 。
Vue所有东西都是响应式的,打开控制台输入app.message="Vue"
可以看到相应的更新。
理解Vue中`MVVM`
MVVM
:
Model
:模型、数据对象(data)View
:视图,模板页面viewModel
:视图模型(Vue的实例)
二、模板语法
插值表达式:{{...}}
功能是向页面渲染数据
<div id="app">
{{ msg }}
</div>
<script>
let app = new Vue({
el:"#app",
data:{
msg:"你好!"
}
});
</script>
使用JavaScript
表达式
{{ number + 1}}
{{ ok ? 'YES' :'NO'}}
{{ message.split('').reverse().join('')}}
有个限制,每个绑定都只能包含单个表达式
<!--这是语句,不是表达式-->
{{var a = 1}}
<!--流程控制也不会生效,应该使用三元表达式-->
{{ if(ok) {return message}}}
v-html
和v-text
v-html
:innerHtml
可以解析html 存在安全性问题v-text
:textContent
不能解析HTML
<div id="app">
<p v-text="html"></p>
<p v-html="html"></p>
</div>
<script>
let app = new Vue({
el: "#app",
data: {
html: " <span>html解析</sapn>!"
},
})
</script>
三、强制数据绑定
v-bind
是Vue中,提供的用于绑定属性的指令。v-bind
可以写合法的js
表达式v-bind
可以简写为:
<img v-bind:src="imgUrl">
data:{
imgUrl="https://cdn.pixabay.com/photo/2020/08/01/10/04/alpine-5455013_960_720.jpg"
}
四、绑定事件
在html属性上加上
v-on
事件属性值,就可以实现Vue的方法监听
可以简写为
@
vue中事件
<button @click="handle"></button>
<script>
let app = new Vue({
el: "#app",
methods: {
//methods 定义了当前Vue实例所有可用的方法
handle() {
alert('click');
}
}
})
</script>
小案例:文字滚动效果
分析:
1、每次点击按钮,获取msg字符串,在使用substring
进行截取操作,放到最后一个位置
2、实现文字连续滚动,需要添加定时器
第一步:每次点击按钮,字符串就滚动一次
handelClick:function(){
// 取第一个字符
let startStr = this.msg.subString(0,1);
// 获取剩下的字符
let endStr = this.msg.subString(1);
//拼接新的字符 赋值给msg
this.msg = endStr + startStr
}
第二步:添加定时器
handelClick:function(){
setInterval(function(){
let _this = this;
// 取第一个字符
let startStr = _this.msg.subString(0,1);
// 获取剩下的字符
let endStr = _this.msg.subString(1);
//拼接新的字符 赋值给msg
_this.msg = endStr + startStr
},100)
}
定时器会存在this指向问题,this指向的是window,因此需要保存一份thislet _this = this
还可以使用箭头函数,解决this指向问题。
handelClick:function(){
setInterval(() =>{
// 取第一个字符
let startStr = this.msg.subString(0,1);
// 获取剩下的字符
let endStr = this.msg.subString(1);
//拼接新的字符 赋值给msg
this.msg = endStr + startStr
},100)
}
第三步:设置停止按钮(停止定时器)
把定时器赋值给intervarID
,然后在data里传入一个null,在data里可以再全局访问到
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="js/vue.js"></script>
<style>
</style>
</head>
<body>
<div id="app">
<input type="button" value="开始" @click="handelClick">
<input type="button" value="结束" @click="stop">
<p>{{ msg }}</p>
</div>
<script>
let app = new Vue({
el: "#app",
data: {
msg: "公告:八月七号是立秋!",
interv: null
},
methods: {
handelClick() {
if (this.interv != null) return;
this.interv = setInterval(() => {
//获取第一个字符
var strat = this.msg.substring(0, 1)
//获取到后面所有字符
var end = this.msg.substring(1)
//重新拼接新的字符串,并赋值给this.msg
this.msg = end + strat
// app 实例,会监听自己身上data中所有数据的改变,只要数据一发生变化,就会自动把最新的数据 从data同步到页面中。
}, 300)
},
stop() {
clearInterval(this.interv)
//每当清除了定时器之后需要重新把interv设置为null
this.interv = null;
}
}
})
</script>
</body>
</html>
在Vue中,如果要获取data里的数据、methods里面的方法,都要通过this来访问。
- 点赞
- 收藏
- 关注作者
评论(0)