VUE
VUE
VUE插值表达式
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="vuejs/vue2.js"></script>
</head>
<body>
<div id="app">
<!-- 插值表达式 -->
<!-- {{msg}} -->
{{user.msg}}{{user.name}}
<p>{{lists[0]}}</p>
<p>{{users[0].name}}</p>
<p v-html="{{msgs}}"></p>
</div>
<script>
// 创建一个vue实例
const app = new Vue({
// el用来给vue实例一个作用域
el:"#app",
data:{
// 给vue定义一些相关的数据
// msg:"欢迎使用vue",
// 对象
user:{
msg:"hello",
name:"admin",
password:"123",
},
// 集合
lists:["1","2","3"],
//
users:[{name:"123",age:"20"},{name:"00",age:"2"}],
//
msgs:"<p>123</p>",
},
});
</script>
</body>
VUE函数
<div id="app">
<p> {{msg}} </p>
<p> {{age}} </p>
<button @click="addage"> 增加年龄 </button>
<button @click="addage"> 增加年龄 </button>
<button @click="subage()"> 增加年龄 </button>
<h1 v-show="shows">影藏</h1>
<button @click="toggleshow">显示/隐藏</button>
</div>
<script>
// 创建一个vue实例
const app = new Vue({
// el用来给vue实例一个作用域
el:"#app",
data:{
// 给vue定义一些相关的数据
msg: "欢迎使用vue",
age: 20,
shows:false,
},
methods:{
addage: function(){
// 拿到data中的属性
// this代表整个vue实例
this.age = 1;
},
subage(){
this.age--;
},
changeage(age){
this.age = age;
},
toggleshow(){
this.shows = !this.shows;
},
},
});
</script>
JS数组
let arr =[1,2,3];
arr.push(4);
arr.splice(1,1);
arr.reverse();
arr.sort();
VUE v-for
v-for写在哪一个标签中,就会生成多个对应的标签
在使用v-for的时候,一定要加入:key,用来给vue内部提供重用和排序的唯一的值
<body>
<div id="app">
<!-- v-for -->
<!--
v-for写在哪一个标签中,就会生成多个对应的标签
注意:
在使用v-for的时候,一定要加入:key,用来给vue内部提供重用和排序的唯一的值
-->
<span v-for="(value,key,index) in user">
{{index}} --- {{key}} --- {{value}}<br>
</span>
<ul>
<li v-for="(value,index) in lists">
{{index}} --- {{value}}
</li>
</ul>
<ol>
<li v-for="(u,index) in users" :key="u.id">
{{index}} --- {{u.name}} --- {{u.age}}
</li>
</ol>
<!-- <ol>
<li v-for="(value,key,index) in ((user) in users)">
{{index}} --- {{key}} --- {{value}}
</li>
</ol> -->
</div>
<script src="js/vue.js"></script>
<script>
const app = new Vue({
el: "#app",
data: {
user:{name:"小强",age:23},
lists: ["北京","上海","广州","深圳","杭州"],
users: [{name:"小强",age:25},{name:"小红",age:18}]
},
});
</script>
</body>
VUE v-model
1、使用v-model指定可以实现数据的双向绑定
2、所谓的双向绑定,表单中的数据和Vue实例中data的数据变化是同步的
MVVM架构:双向绑定机制
Model:数据
View:页面,页面展示数据
VM:ViewModel 监听器
绑定案例:
<body>
<div id="app">
姓名:<input v-model="name"><br>
年龄:<input v-model="age"><br>
性别:<input v-model="sex"><br>
<input type="button" value="采集" @click="getRes">
结果
<h2>{{name}} + {{age}} + {{sex}}</h2>
</div>
<script src="vuejs/vue2.js"></script>
<script>
const app = new Vue({
el:"#app",
data:{
name:"请输入姓名",
age:"请输入年龄",
sex:"请输入性别",
},
methods:{
getRes(){
alert(this.name + this.age + this.sex);
}
},
});
</script>
</body>
查看代码
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
margin: 0%;
padding: 0%;
}
.tou{
margin-left: 20%;
width: 600px;
height: 500px;
border: 5px solid black;
}
.test{
width: 200px;
height: 20px;
margin: 5px;
border-radius: 20px;
}
button{
margin-left: 10px;
margin-top: 5px;
}
.sexs{
margin: 10px;
}
select{
margin: 10px;
}
ul li{
list-style: none;
height: 30px;
background-color: aqua;
border: 1px solid black;
}
</style>
</head>
<body>
<div id="app" class="tou">
<div class="">
<input type="text" v-model="name" class="test" placeholder="请输入姓名" required><br>
<input type="text" v-model="age" class="test"placeholder="请输入年龄" required><br>
<div class="sexs">
<input type="radio" v-model="sex" name="sex">男
<input type="radio" v-model="sex" name="sex">女<br>
</div>
<select name="" id="" v-model="address">
<option selected value="计算机">计算机</option>
<option value="java">java</option>
<option value="c++">c++</option>
</select><br>
<button @click="sets">提交</button>
</div>
<hr>
<div class="floor">
<ul>
<li>姓名----年龄----性别----专业-----爱好<li>
<li v-for="(u,index) in users" :key="u.id">
{{u.name}} --- {{u.age}} --- {{u.sex}} --- {{u.address}}
<button @click="dels(index)">删除</button>
</li>
</ul>
</div>
</div>
<script src="vuejs/vue2.js"></script>
<script>
const app = new Vue({
el: "#app",
data:{
users: [{name:"小强",age:25,sex:"男",address:"java"}]
},
methods:{
sets(){
let u={name:this.name , age:this.age , sex:this.sex ,
address:this.address };
this.users.push(u);
this.name="";
this.age="";
},
dels(index){
this.users.splice(index,1);
},
},
});
</script>
</body>
input
<div id="app">
<input type="text" v-model="message">
<br>
<span>{{message}}</span>
<br>
<button @click="changeValue">通过改变JS中message的值改变文本框的值</button>
<hr>
<input type="radio" name="gender" value="m" v-model="gender">男
<input type="radio" name="gender" value="w" v-model="gender">女
<hr>
<input type="checkbox" name="hobby" value="a" v-model="hobby">A
<input type="checkbox" name="hobby" value="b" v-model="hobby">B
<input type="checkbox" name="hobby" value="c" v-model="hobby">C
<!-- <button @click="show">查看</button> -->
<hr>
<select v-model="address">
<option value="x">X</option>
<option value="y">Y</option>
<option value="z">Z</option>
</select>
<button @click="show">查看</button>
<input type="file">
</div>
<script src="js/vue.js"></script>
<script>
const app = new Vue({
el: "#app",
data: {
message:'',
gender:'w',
hobby:[],
address:'z',
},
methods: {
changeValue() {
this.message = prompt("请输入:");
},
show() {
// console.log(this.hobby);
console.log(this.address);
}
},
});
</script>
注意:
1.注意vue实例的作用域
2.事件绑定(v-on:click)和属性绑定(v-bind:src)
3.v- if 和 v-show区别*********
4.双向绑定,应用在表单元素上
5.双向绑定在不同表单元素上的用法 radio checkbox select
6.双大括号,Vue的属性或是事件用自己的数据不需要写大括号,其他需要写
7.Vue的解析过程,最终展示后的html页面,是没有vue语法的
事件修饰符
stop修饰符:阻止事件冒泡
<div id="app" class="mains" @click="divClick">
<div class="divaa">
<button @click.stop="btnClick">按钮</button>
</div>
</div>
<script src="vuejs/vue2.js"></script>
<script>
/**
* 事件修饰符
* 和事件连用,决定事件出发的条件
* 或阻止事件的触发机制
*
*/
const app = new Vue({
el: "#app",
data:{},
methods:{
btnClick(){
alert("btn");
},
divClick(){
alert("div");
}
}
});
</script>
事件修饰符:prevent
<div id="app" class="mains" @click="divClick">
<a href="http://www.bilibili.com"
@click.prevent="aClick" >链接</a>
<form action="aaa" >
<input type="submit"
@click.prevent="submitClick" value="">
</form>
</div>
<script src="vuejs/vue2.js"></script>
<script>
/**
* 事件修饰符
* 和事件连用,决定事件出发的条件
* 或阻止事件的触发机制
* .prevent : 阻止标签的默认行为
* 或在a标签的href="javascript.void(0)"
*
*/
const app = new Vue({
el: "#app",
data:{},
methods:{
aClick(){
location.href = "http://www.baidu.com";
// alert("超级链接");
},
submitClick(){
alert("form");
}
}
});
</script>
事件触发事件:.once
事件只触发一次,之后执行标签的默认行为
键盘修饰符
- .enter
- .tab
- .delete(对删除和退格都起作用)
- .space
- .up
- .down
- .left
- .right
案例(表单添加删除)
查看代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="vuejs/vue2.js"></script>
<style>
*{
padding: 0%;
margin: 0%;
}
.apps{
width: 500px;
height: 500px;
padding-left: 40%;
}
input{
width: 100px;
height: 20px;
border-radius: 20px ;
border: 3px solid rgb(129, 129, 248);
}
ul li{
width: 400px;
height: 30px;
margin: 5px;
}
a{
border: 3px solid;
text-decoration: none;
color: red;
border-radius: 5px;
}
</style>
</head>
<body>
<div id="app" class="apps">
<input type="text" v-model="inputs"> <button @click="addLi">添加</button>
<ul>
<li v-for="(value,index) in message">
{{index}} --- {{value}}
<a href="#" @click="del(index)">删除</a>
</li>
</ul>
<span>总数量:{{message.length}}条</span> <button @click="dels">删除所有</button>
</div>
<script src="js/vue.js"></script>
<script>
const app = new Vue({
el: "#app",
data: {
message:["第一次记事","汪峰发新专辑"],
len:'',
inputs:"",
},
methods:{
addLi(){
this.message.push(this.inputs);
let lens = this.message.length;
this.len = lens;
this.inputs='';
},
del(index){
this.message.splice(index,1);
},
dels(){
this.message = [];
}
}
});
/*
1、追加
2、注意文本框要清空
3、删除除了删除记录,还要修改总记录数
4、删除所有,所有记录删除,总记录数归0
*/
</script>
</body>
</html>

浙公网安备 33010602011771号