<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 1. 导入vue包 -->
<script src="./lib/vue-2.2.2.js"></script>
</head>
<body>
<!-- 将来new的vue实例,会控制这个元素中所有内容 -->
<div id = "app">
<p>{{ msg }}</p>
</div>
<script>
// 2. 创建一个vue实例
// 当我们导入包后,内存中会有一个vue的构造函数
var vm = new Vue({
el : '#app', // 表示当前我们new的这个Vue实例,要控制页面上的哪个区域
data : { // data 属性中,存放el要用到的数据
msg : '欢迎学习vue' // 通过vue提供的指令,很方便的就能把数据渲染到页面上,
// 不需要操作DOM【vue不提倡操作DOM】
}
})
</script>
</body>
</html>
可以解决插件表达式的闪烁问题
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
[v-cloak]{
display: none;
}
</style>
</head>
<body>
<div id = "app">
<p v-cloak>{{ msg }}</p>
</div>
<script src="./lib/vue-2.2.2.js"></script>
<script>
var vm = new Vue({
el:'#app',
data:{
msg:'123123'
}
})
</script>
</body>
</html>
和插件表达式一样可以渲染数据
<h3 v-text="msg"></h3>
将数据装换为HTML语句
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
[v-cloak]{
display: none;
}
</style>
</head>
<body>
<div id = "app">
<p v-cloak>{{ msg }}</p>
<h3 v-text="msg"></h3>
<div>{{ msg2 }}</div>
<div v-text="msg2"></div>
<div v-html="msg2"></div>
</div>
<script src="./lib/vue-2.2.2.js"></script>
<script>
var vm = new Vue({
el:'#app',
data:{
msg:'123123',
msg2:'我是h1
'
}
})
</script>
</body>
</html>
<input type="button" value="按钮" [v-bind]:title="mytitle + ‘123’">
将mytitle 变为变量,后可以+表达式,v-bind可以省略
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
[v-cloak]{
display: none;
}
</style>
</head>
<body>
<div id = "app">
<p v-cloak>{{ msg }}</p>
<h3 v-text="msg"></h3>
<div>{{ msg2 }}</div>
<div v-text="msg2"></div>
<div v-html="msg2"></div>
<input type="button" value="按钮" v-bind:title="mytitle" v-on:click="show">
</div>
<script src="./lib/vue-2.2.2.js"></script>
<script>
var vm = new Vue({
el:'#app',
data:{
msg:'123123',
msg2:'我是h1
',
mytitle:'一个按钮'
},
methods:{ // 保存所有事件
show:function(){
alert("hello")
}
}
})
</script>
</body>
</html>
<!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="./lib/vue-2.2.2.js"></script>
</head>
<body>
<div id="app">
<input type="button" value="浪起来" @click="lang">
<input type="button" value="低调" @click="nolang">
<h4>{{msg}}</h4>
</div>
<script>
var vm = new Vue({
el : '#app',
data:{
msg:'猥琐发育,别浪~~!',
in:null
},
methods:{
lang(){
if(this.in != null){return
}
// 箭头使内部this指向外部this
this.in = setInterval( () => {
// 获取头的第一个字符
var start = this.msg.substring(0,1)
// 获取后面所有字符
var end = this.msg.substring(1)
// 重新拼接,得到新的字符串并复制给this.msg
this.msg = end + start
},400)
},
nolang(){
clearInterval(this.in)
// 每次清除定时器后重新赋值
this.in=null
}
// vm会监听自己的数据,如果数据改变,会自动重新渲染到页面上。所以程序员可以只关心数据
}
});
</script>
</body>
</html>
名称 | 解释 |
---|---|
.stop | 阻止冒泡 |
.prevent | 阻止默认事件 |
.capture | 添加事件监听器使用事件捕捉模式 |
.self | 自身事件在元素本身(非子元素)触发时触发回调 |
.once | 事件只触发一次 |
<!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="./lib/vue-2.2.2.js"></script>
<style>
.inner{
height: 150px;
background-color: pink;
}
</style>
</head>
<body>
<div id="app">
<div class="inner" @click="div1Handler">
<input type="button" value="戳他" @click="butClick">
</div>
</div>
<script>
var vm = new Vue({
el:'#app',
data:{},
methods:{
div1Handler(){
console.log("inner点击事件")
},
butClick(){
console.log("but点击事件")
}
}
})
</script>
</body>
</html>
冒泡机制:div内包含按钮,当按钮启动时,div的click也会被触发,这就是冒泡机制
阻止:在内层的事件名后添加.stop
.self和.stop区别
.self只有自己才能触发,不会阻止冒泡
.stop阻止所有冒泡
<body>
<div id="app">
<h4>{{ msg }}</h4>
<input type="text" v-model="msg">
</div>
<script>
var vm = new Vue({
el:'#app',
data:{
msg:'as打算大所',
},
methods:{
}
})
</script>
</body>
<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="calc">
<input type="text" v-model="result">
</div>
<script>
var vm = new Vue({
el:"#app",
data:{
n1:0,
n2: 0,
result: 0,
opt: '+'
},
methods:{
// 定义计算方法
// calc(){
// 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;
// }
// }
calc(){
var codeStr = 'parseInt(this.n1)' + this.opt + 'parseInt(this.n2)'
this.result = eval(codeStr)
}
}
})
</script>
</body>
<h1 :class="['red','thin']">这时数组形式的class</h1>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="./lib/vue-2.2.2.js"></script>
<style>
.red{
color: red;
}
.thin{
font-weight: 200;
}
.italic{
font-style: italic;
}
.active{
letter-spacing: 0.5em;
}
</style>
</head>
<body>
<div id="app">
<h1 :class="['thin','red','italic']">这是一个H1,大大大!!!!!</h1>
</div>
<script>
var vm = new Vue({
el:"#app",
data:{
},
methods:{
}
})
</script>
</body>
<h1 :class="['red','thin',flage?'active':'']">这时数组形式的class</h1>
<h1 :class="['thin', {'red':flage},'italic']">这是一个H1,大大大!!!!!</h1>
<h1 :class="{red:false,thin:true,italic:true}">这是一个H1,大大大!!!!!</h1>
:style
形式书写<h1 :style="{color:'red','font-size':'40px'}">这是一个H1,大大大!!!!!</h1>
作用:为选中的选项添加标识,放置系统只记住选的第几个,若选第一个,在头部添加了一个数据,选项也会变为新添加的数据。只接受string或者number类型
<body>
<!-- 将来new的vue实例,会控制这个元素中所有内容 -->
<!-- 这就是我们的V视图层 -->
<div id = "app">
<label >
id
<input type="text" v-model="id">
</label>
<label >
name
<input type="text" v-model="name">
</label>
<input type="button" value="添加" @click="add">
<p v-for="list in list" :key="list.id"><input type="checkbox" name="" id="">{{list.id}}------{{ list.name }}</p>
</div>
<script>
var vm = new Vue({
el : '#app',
data : { // data 属性中,存放el要用到的数据
name:'',
id:'',
list : [
{id:1,name:'张长旭1'},
{id:2,name:'张长旭2'},
{id:3,name:'张长旭3'},
{id:4,name:'张长旭4'}
]
},
methods:{
add(){
this.list.unshift({id:this.id,name:this.name})
}
}
})
</script>
</body>