1.插值表达式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>丑丑</title>
</head>
<body>
<div id="test" >
<p>{{fuck}}</p>
</div>
<script src="./vue-v2.6.10.js"></script>
<script>
var vue = new Vue({
el:"#test",
data:{
fuck:"Hello World!!!",
}
});
</script>
</body>
</html>
el:元素的选择器 (比如id选择器->#test class选择器->.test)
data:数据 (比如kk:"我是内容")
插值的使用:{{fuck}} (插值的使用是 外层用两个大括号包住 里面写data里的属性值)
2.vue指令的使用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>vue指令的使用</title>
</head>
<body>
<div class="test" >
<p v-if="kk" >{{fuck}}</p>
</div>
<script src="./vue-v2.6.10.js"></script>
<script>
var vue = new Vue({
el:".test",
data:{
fuck:"Hello World!!!",
kk:1,
}
});
</script>
</body>
</html>
语法:
v-if="data里属性的名字"
data 里的 kk 值为1 = true, 0=false
实现的效果等于 v-if里的值为true是 就显示 为false时加了指令的 元素就会被删除 达到了显示隐藏的效果
3. v-html于v-text的使用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>vue指令的使用</title>
</head>
<body>
<div class="test" >
<p >html</p>
<p v-html="html" >html1</p>
<p v-html="html2" >html2</p>
<p >text</p>
<p v-text="text1">text</p>
<p v-text="text2">text2</p>
</div>
<script src="./vue-v2.6.10.js"></script>
<script>
var vue = new Vue({
el:".test",
data:{
text1:"我是text1的内容",
text2:"<s>我被掰弯了</s>",
html:"我是html的内容",
html2:"<s>我被掰弯了</s>"
}
});
</script>
</body>
</html>
语法:
v-html="data属性里值的名字"
1.v-html 和一般标签包裹的内容 优先显示 v-html对应的内容
2.v-html 的内容一段 代码时 会编译代码 显示出来
v-text="data属性里值的名字"
1.v-text 和一般标签包裹的内容 优先显示 v-text对应的内容
2.v-text 的内容一段 代码时 不会编译成代码执行 而会原原本本的显示
3. v-bind:href
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="./vue-v2.6.10.js"></script>
</head>
<body>
<div id="app">
<!-- v-bind 绑定属性值的 v-bind:属性名字 -->
<!-- <img v-bind:src="img_path" alt=""> -->
<a v-bind:href="'http://127.0.0.1:900/getone?id='+ids"></a>
</div>
</body>
<script>
var app = new Vue({
el:'#app',
data:{
img_path:'./4-small.jpg',
ids:'1'
}
});
</script>
</html>
语法:
v-bind:标签属性名称
需要注意 如果是传递值的 时候 'http://127.0.0.1:900/getone?id=‘ 如果是写死的代码 得再用一个单引号‘’包住
传递的变量数值 照常用+拼接
v-bind:class 的使用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>香蕉船</title>
<style type="text/css">
.r{
color: aliceblue;
}
.g{
background-color: lightgreen;
}
</style>
</head>
<body>
<div class="app">
<div v-bind:class="isg">aaaa</div>
</div>
<script src="vue-v2.6.10.js"></script>
<script>
var app = new Vue({
el:".app",
data:{
isr:'r',
isg:'g'
}
});
</script>
</body>
</html>
先定义好CSS 然后在app 对象里 指定CSS名称 用单引号引起
在 绑定的class属性里写上app里指定的名称
多个指定样式用 [] 扩起来 逗号,分割
效果:
v-bind:style
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>香蕉船</title>
<style type="text/css">
.r{
color: aliceblue;
}
.g{
background-color: lightgreen;
}
</style>
</head>
<body>
<div class="app">
<div v-bind:style="{color:r,fontSize:f+'px'}" >aaaa</div>
</div>
<script src="vue-v2.6.10.js"></script>
<script>
var app = new Vue({
el:".app",
data:{
r:'red',
f:50
}
});
</script>
</body>
</html>
style样式标签里 用{} 扩起来
样式属性 有 - 拼接的去掉 -
多个样式用 , 隔开
变量和字符串用+号拼接
效果:
第二种写法:
变量值用[] 扩起来
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>香蕉船</title>
<style type="text/css">
.r{
color: aliceblue;
}
.g{
background-color: lightgreen;
}
</style>
</head>
<body>
<div class="app">
<div v-bind:style="[r,f]" >aaaa</div>
</div>
<script src="vue-v2.6.10.js"></script>
<script>
var app = new Vue({
el:".app",
data:{
r:{
color:'red'
},
f:{
fontSize: '50px'
}
}
});
</script>
</body>
</html>
v-bind 的简写形式
:标签属性名
:号加标签属性名字
示例:
<div :style="[r,f]" >aaaa</div>
单项数据绑定
修改vue 对象里的值 会影响前端页面的值
修改前端页面的值 但 不会影响vue对象里的值
双向数据绑定
改变页面和改变vue的值 都会使vue对象或页面里的值 发生改变
v-model:标签属性值
示例:
<input type="text" v-model:value="val" />
第二种写法:
<input type="text" v-model="val" />
v-model 不能使用在展示标签中 例如 p 标签 div 标签等
v-model 只能用在用户可操作的 标签上 例如 input标签
复选框获取值问题
<div class="app">
<form action="#">
<input type="checkbox" name="eat" value="吃饭" v-model="checked" />吃饭
<input type="checkbox" name="sleep" value="睡觉" v-model="checked" />睡觉
<input type="checkbox" name="doudou" value="打豆豆" v-model="checked" />打豆豆
{{checked}}
<input type="radio" name="rad" value="男" v-model="sex"/>男
<input type="radio" name="rad" value="女" v-model="sex"/>女
{{sex}}
</form>
</div>
<script src="vue-v2.6.10.js"></script>
<script>
var app = new Vue({
el:".app",
data:{
checked:[], //复选框 选中的值
sex:[] //单选按钮 选中的值
}
});
</script>
input checkbox 标签上加上 v-model="app对象data里的属性名"
单选按钮获取值的问题
input radio 标签上加上 v-model="app对象data里的属性名"
事件修饰符
官方文档:
API — Vue.jsVue.js - The Progressive JavaScript Frameworkhttps://cn.vuejs.org/v2/api/#v-model
v-model.number 强制转换为数值类型
v-model.trim 去掉首尾的空格字符
绑定事件
官方文档:
API — Vue.jsVue.js - The Progressive JavaScript Frameworkhttps://cn.vuejs.org/v2/api/#v-on
v-on:click="app对象data里的方法名"
v-show
v-show="boolean"
使用v-show控制标签来回切换显示
v-if
v-if="判断"
v-else-if="判断"
v-else=""
v-for
v-for="(值,键) in 数组名"
输出数组
输出对象
v-once
数据只渲染一次 只绑定一次 之后不会改变
生命周期:
<script>
var app = new Vue({
el:'#siki',
data:{
msg:''
},
beforeCreate(){
console.log('1.我是beforeCreate,创建之前执行' );
},
created(){
console.log('2.我是create,创建完成之后执行');
},
beforeMount(){
console.log('3.我是beforeMount,被挂载之前调用');
},
mounted(){
console.log('4.我是mounted,被挂载之后调用'+ this.$refs.msgText.innerHTML);
},
beforeUpdate(){
console.log('5.我是beforeUpdate,数据跟新之前被调用'+ this.$refs.msgText.innerHTML);
},
updated(){
console.log('6.我是update,数据跟新之后被调用'+ this.$refs.msgText.innerHTML);
},
beforeDestroy(){
console.log('7.我是beforeDestroy,销毁之前被调用');
},
destroyed(){
console.log('8.我是destroyed,销毁之后被调用');
},
methods:{
OnDestroy(){
this.$destroy(); //触发destroyed函数 销毁函数
}
}
});
</script>