day2、vue
1.2容器和实例对应关系
-
当同时存在两个类(类名相同)的容器 一个vue实例
-
vue实例会解析第一个容器,另一个不会解析
-
-
当同时存在两个类(类名相同)的容器 两个vue实例
-
会报错
-
-
所以总结,容器和实例必须要一一对应
1.3双括号内写什么
插值语法
-
两个花括号中必须必须要写js的表达式
-
-
注意区分js表达式和表达式代码
-
表达式
-
一个表达式会生成一个值,可以存在任何需要值的地方
-
a
-
a+b
-
x===y?a:b
-
-
-
js代码
-
if(){}
-
for(){}
-
2.模板语法
2.1插值语法
-
插值语法
-
功能:用于解析标签体内容
-
写法:{{xxx}}xxx是js表达式,且可以直接读取到data中的所有属性
-
2.2指令语法
-
指令语法
-
功能:用于解析标签(包括:标签属性、标签体内容、绑定事件)
-
举例v-bind:herf="xxx"可以简写为 :href = "xxx",xxx同样要写js表达式,且可以直接读取到data中的所有属性。
-
备注:Vue中有很多的指令,且形式都是:v-????,此处我们只是那v-bind举例
-
3.数据绑定
3.1单项数据绑定 v-bind
-
单项绑定
-
数据只能从data流向页面
-
3.2双向数据绑定 v-model
-
改页面上的东西,页面里面的东西,也可以改变
-
v-model只能应用在表单类元素上,就是用在输入类的语句上,value值
-
数据不仅可以凶data流向页面,还可以从页面流向data。
-
备注
-
双向绑定一般用在表单类元素上(input select)
-
v-model:value可以简写为v-model,应为v-model默认的收集得劲就是value值
-
4.el和data的两种写法
-
el的第二种写法
-
一个是new vue的时候配置
-
一个是先创建实例,通过x.$mount('#root');
-
<script>
Vue.config.productionTip = false;
const x = new Vue({
// el:'root',
data:{
name:'raoxin'
}
});
//也可以指定这个x实例的指向的容器
x.$mount('#root');
</script>
-
-
data的两种写法
-
对象式
-
函数式
-
目前两种方法都可以,但是学到组件的时候,data必须用函数式,否则会报错
-
-
-
重要原则
-
由于vue函数管理,一定不要写箭头函数,一旦写了箭头函数,this就不再是vue实例了
-
5.mvvm模型
vue作者参考了这个模型
-
vm就是处理数据和页面之间的桥梁,当数据发生变化的时候,这个视图层也会发生相应的变化
-
所以在项目中经常用vm来代表实例对象
-
红色框就是vm
-
new vue出来的实例对象的所有模型都可以在vm中,就是红色框中直接使用
6.数据代理 object.defineProperty()
6.1该方法的简单使用以及理解
这不叫数据代理
-
<script>
let number = 18;
let person = {
name:'raoxin',
sex:'nan',
}
Object.defineProperty(person,'age',{
value:20
})
</script> -
通过这个方法有三个基本的特点
-
不可修改
-
不可删除
-
不可枚举
-
-
意思就是给person这对对象添加一个age他的value值是18
-
但是这个值是不参与枚举的,意思就是,不参加遍历,也不可以通过person修改,不可以删除
-
想要让他可以枚举
-
-
想让他可以修改
-
-
想让他可以删除
-
-
需求
-
需要这个number变,person里面的number也变
-
get函数就是getter
-
我每一次查询age都会触发getter函数的调用,且值就是getter的返回值
6.2数据代理的定义
数据代理:通过一个对象代理对另一个对象中属性的操作
<script>
// 通过obj1的值来修改obj2的值
let obj1 = { x:100};
let obj2 = { y:200};
Object.defineProperty(obj2,'x',{
//当有人读取obj2 x的值的时候,get就会被调用
get(){
return obj1.x;
},
//当有人修改obj2.x的时候,这个就会调用
set(value){
obj1.x = value;
}
})
</script>
6.3vue中数据代理的应用
-
在vue中data就是代理的对象
-
读取的时候和修改的时候
-
-
验证
-
-
!!!!
-
-
7.事件处理
7.1鼠标点击事件的基本处理
<body>
<div id="root">
<!-- 点击是会调用myfun的函数-->
<button v-on:click="myfun">点我提示信息</button>
</div>
<script>
Vue.config.productionTip = false;
// 这个函数放在外面是没有用的
// var myfun = function (){
// alert('nihao1');
// }
new Vue({
el:'#root',
data:{
},
methods:{
// 也可以myfun(){}
myfun:function (){
alert('nihao1');
}
}
})
</script>
</body>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="../js/vue.js"></script>
</head>
<body>
<div id="root">
<!-- 点击是会调用myfun的函数-->
<button v-on:click="myfun">点我提示信息</button>
<!-- @是v-on的简写-->
<button @click="myfun">点我提示信息</button>
</div>
<script>
Vue.config.productionTip = false;
// 这个函数放在外面是没有用的
// var myfun = function (){
// alert('nihao1');
// }
const x = new Vue({
el:'#root',
data:{
},
methods:{
// 也可以myfun(){}
myfun(event){
// alert(this ===x);//这里面的this就是x,就是vue实例,返回结果为true
alert('同学你好')
}
}
})
</script>
</body>
</html>
-
传参就加showinfo()加括号,不传就不加,但是想要传参数,但是本身的event又不丢失,可以用$event占位
7.2事件修饰符
-
防止点击弹窗后跳走,可以
-
-
在vue中可以
7.1.1 vue中有哪些事件修饰符
7.1.2先阻止冒泡再阻止跳转
修饰符可以连续写
7.3键盘事件
7.3.1keydown(鼠标按下)
7.3.2keyup(鼠标按下并弹出)
-
首先每个按键都有自己的按键编码,也有自己的名称(不是所有的按键都可以绑定事件)
-
比如回车键是16,名称是Enter,在vue中绑定事件的时候用原来的名称也是可以的,但是vue为了我们更加的方便,将其都改为小写,如下面的图中的1
-
如何去拿按键的原来的名称和编码呢
-
如下可以使用console.log(e.keycode)和console.log(e.key)
-
结果如下
-
-
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="../js/vue.js"></script>
</head>
<body>
<div id="root">
<!-- 按下enter,以后调用conSole函数-->
<input type="text" placeholder="按下提交" @keyup="conSole">
</div>
<script>
Vue.config.productionTip = false;
new Vue({
el:'#root',
methods:{
// 获取值,即获取框中的值
conSole(e){
// console.log(e.target.value);
console.log(e.key);
console.log(e.keyCode);
}
}
})
</script>
</body>
</html>
-
-
vue给常用的按键都起了别名
-
-
-
<body>
<div id="root">
<!-- 按下enter以后调用conSole函数-->
<input type="text" placeholder="按下提交" @keyup.enter="conSole">
</div>
<script>
Vue.config.productionTip = false;
new Vue({
el:'#root',
methods:{
// 获取值,即获取框中的值
conSole(e){
console.log(e.target.value);
}
}
})
</script>
</body>
7.3.3特殊情况(alt+y)
-
比如绑定的是tab键,当我按下tab的时候,光标就已经切走了,还没有等我按键抬起来,就触发不了了,所以要配合keydown使用
-
也可以配合其他键使用比如alt+y
-
ctrl+y
-
7.3.4自己定义别名

浙公网安备 33010602011771号