Vue学习笔记(更新中)

MVVM模型:
1. M:模型(Model):data中的数据 【数据层,数据可能是我们固定的死数据(写在script里的自定义对象等),更多的是来自我们服务器,从网络上请求下来的数据】
2. V:视图(View):模板代码 【视图层,在前端开发中通常是DOM层,主要给用户展示各种信息】
3. VM:视图模型(ViewModel):Vue实例 【视图模型层,是view&model沟通的桥梁】
总结:可以理解为数据层M中的数据通过视图模型层VM监听绑定,最终在视图层V中展示出来
模板语法:
Vue模板语法有2大类:
1.插值语法:
功能:用于解析标签体内容
写法:{
  {xxx}},xxx是js表达式,表达式一般为一个结果,且可以直接读取到data中的所有属性
2.指令语法:
功能:用于解析标签(包括:标签属性,标签体内容,绑定事件……)
写法:v-bind:href="xxx"或简写为 :href="xxx",xxx同样要写js表达式
数据绑定:
1. 单向绑定(v-bind):数据只能从data流向页面
2. 双向绑定(v-model):数据不仅能从data流向页面,还可以从页面流向data
    2.1 双向绑定一般都应用在表单类元素上(如:input、select等)
    2.2 v-model:value 可以简写为v-model,因为v-model默认收集的就是value值
    
    模拟简单的数据双向绑定:
    <body>
        <input type="text"> 同步: <span></span>
        <script>
            const input = document.querySelector('input');
            const span = document.querySelector('span');
            let obj = {};
            let data = {
                name: 'yy',
            }

            Object.defineProperty(obj, 'text', {
                get() {
                    return data.name; //数据代理,代理data中的name值
                },
                set(val) {
                    input.value = span.innerHTML = val;
                }
            });

            input.value = span.innerHTML = obj.text;
            input.addEventListener('input', function(e) {
                obj.text = e.target.value;
            });
        </script>
    </body>

    收集表单数据:
        若:type为text,则v-model收集的是value值,用户输入的就是value值
        若:type为radio,则v-model收集的是value值,且要给标签配置value值
        若:type为checkbox
            1.没有配置input的value属性,那么收集的就是checked(勾选or未勾选,是布尔值)
            2.配置input的value属性:
                (1)v-model的初始值是非数组,那么收集的就是checked(勾选or未勾选,是布尔值)
                (2)v-model的初始值是数组,那么收集的就是value组成的数组
        备注:v-model的三个修饰符:
                lazy:失去焦点再收集数据
                number:输入字符串转为有效的数字
                trim:输入首尾空格过滤
Vue中的数据代理:
1.Vue中的数据代理:通过vm对象来代理data对象中属性的操作(读/写)
2.Vue中数据代理的好处:更加方便的操作data中的数据
3.基本原理:
通过Object.defineProperty()把data对象中所有属性添加到vm上
为每一个添加到vm上的属性,都指定一个getter/setter
在getter/setter内部去操作(读/写)
data与el的2种写法:
1.el的两种写法: 
    (1)new Vue时候配置el属性
    (2)先创建Vue实例,随后再通过vm.$mount('#root')指定el的值
2.data的两种写法:
    (1)对象式
    (2)函数式
    备注:学到组件时,data必须使用函数式,否则会报错
事件的基本使用:
1.使用v-on:xxx 或 @xxx 绑定事件,其中xxx是事件名
2.事件的回调需要配置在methods对象中,最终会在vm上
3.methods中配置的函数,不要用箭头函数!否则this就不是vm了
4.methods中配置的函数,都是被Vue所管理的函数,this的指向是vm 或 组件实例对象
5.@click="demo" 和 @click="demo($event)"效果一致,但是后者可以传参
Vue中的事件修饰符:
1.prevent:阻止默认事件(常用)
    <a href="https://baidu.com" @click.prevent="showInfo">点我提示信息</a>

2.stop:阻止事件冒泡(常用)
    //阻止事件冒泡并只能点击一次
    <div class="demo1" @click.once="showInfo">
        <!-- 修饰符可以连写 -->
        <button @click.stop.once="showInfo">点我</button>
    </div>
    showInfo() {
        alert('msg');
    }

3.once:事件只触发一次(常用)
    <button @click.once="showInfo">1次</button>

4.capture:使用事件的捕获模式
    <div class="box1" @click.capture="showMsg(1)">
        div1
        <div class="box2" @click="showMsg(2)">
            div2
        </div>
    </div>
    showMsg(msg) {
        console.log(msg);
    }

5.self:只有event.target是当前操作的元素才是触发事件
    <!-- 也能用来阻止冒泡 -->
    <div class="demo2" @click.self="showInfo">
        <button @click="showInfo">123</button>
    </div>

6.passive:事件的默认行为立即执行,无需等待事件回调执行完毕
    (例:滚轮事件
    @wheel.passive="demo"
    demo() {
    for (let i = 0; i < 20000; i++) {
        console.log('i');
    }
    在输出很多数据时,滚轮事件将先于数据输出前执行)
键盘事件:
1.Vue中常用的按键别名ÿ
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鳕鱼&羚羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值