尚硅谷 天禹老师 Vue学习笔记总计(自己复习用)

004 Vue环境搭建

如何关掉这2个提示?

关闭第一个提示,下载Vue的开发者工具

安装 — Vue.js

Vue开发者工具GitHub下载地址:

 https://github.com/vuejs/vue-devtools#vue-devtools

或者直接在这个地方下载:

Vue开发者工具扩展链接:
【下载开发者工具】:
https://pan.baidu.com/s/1MtYvMPew4lb14piIrs9x6w
提取码:6666

阻止Vue在启动时生成生产提示


005 Vue 小案例


006 Vue 分析hello案例


008 Vue 数据绑定

Vue中有2种数据绑定的方式:

1.单向数据绑定:v-bind 数据只能从data流向页面

2.双向数据绑定:v-model 数据不仅能从data流向页面,也能从页面流向data

备注:

        1.双向数据绑定一般都应用在表单磊元素上(如input ,select 等有value值的)

        2. v-model:value 可以简写为v-model 因为v-model默认收集的就是value的值。

举例

HTML代码

    <div id="root">
        单项数据绑定v-bind:<input type="text" v-bind:value="name" ><br>
        双项数据绑定v-model:<input type="text" v-model:value="name" >
    </div>
    <script>
        Vue.config.productionTip = false;
        new Vue({
            el:"#root",
            data:{
                name:"abc"
            }
        })
    </script>

对应的界面效果:

修改单向数据绑定v-bind所在的文本框中的值,Vue下的name的值不会改变,v-model里面的值也不会改变。

但是修改双向数据绑定v-bind 所在文本框中的值,Vue下name的值会跟着同步改变,而且会影响到v-bind中文本框的值(看如上代码v-bind也调用的是Vue中name值)


009 Vue el,data的2种写法


011 Object.defineProperty讲解

具体内容参考如下代码。有案例详解

<script type="text/javascript">
        let number=39
        let person={
            name:"zhangsan",
            sex:"男",
            // age:19
        }
        Object.defineProperty(person,"age",{
            // value:20,
            // enumerable:true //控制属性是否可以枚举,默认值是false
            // writable:true ,//控制属性是否可以被修改,默认值是false
            // configurable:true, //控制属性是否可以被删除,默认值是false
            get(){
                console.log("有人读取了age属性")
                return number
            },
            set(value){//如果不设置set函数,哪怕前台修改了person.age ,立马再去读取的时候,person.age的属性还是修改前的值
                console.log("有人修改了age属性,且值是",value)
                number=value
            }
        })
        console.log(person)

012 数据代理

数据代理:通过一个对象代理对另一个对象的属性的操作(读,写)

<script>
        let obj1={x:100}
        let obj2={y:100}
        Object.defineProperty(obj2,"x",{
            get(){
                return obj1.x
            },
            set(val){
                obj1.x = val
            }
        })

    </script>

014 事件处理(直接看代码)

事件的基本使用,总结:

        1.使用v-on:xxx 或者 @xxx 绑定事件,其中xxx是事件名

        2.事件的回调需要配置在methods对象中,最终会在vm上

        3.methods中配置的函数,不要用箭头函数,否则this就不是vm(如果是箭头函数,自身没有this,会往上一层找,一般会找到window)

        4.methods中配置的参数,都是被Vue所管理的函数,this的指向是vm或者组件的实例对象

        5.@click="demo" 和 @click="demo($event)" 效果一样,但是后者可以传参,$event是关键词写法

<head>    <script src="vue.js"></script> </head>
<div id="root">
  <!-- <button v-on:click="showInfo">点我提示信息</button> //v-on 用法 -->
  <!-- <button @click="showInfo">点我提示信息</button>  v-on 简写为@ 函数名不加括号,不传参可以不加括号,也可以加 -->
        <button @click="showInfo()">点我提示信息</button> <!-- v-on 简写为@ -->
        <button @click="showInfo2(233,$event)">点我提示信息-有传参</button> 
    </div>

    <script>
        new Vue({
            el:'#root',
            data:{
          },
            methods: {
                showInfo() {
                    alert("nihao~")
                },
                showInfo2(val,event) {
                    //console.log(event.target,innerText)
                    alert("参数是"+val)
                },
            },
        })
    </script>

015 事件修饰符

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>事件修饰符</title>
    <script src="vue.js"></script>
    <style>
        *{
            padding: 10px;
            margin: 10px;
        }
        .demo1{
            height: 50px;
            background-color: blue;
        }
    </style>
</head>
<body>
    <!--
        Vue中的时间修饰符:
        1.prevent:阻止默认事件(常用)
        2.stop:阻止事件冒泡(常用)
        3.once:事件只触发一次(常用)
        4.capture:使用事件的捕获模式。
        (正常情况:事件先捕获,然后冒泡。事件的处理是在冒泡阶段处理的。
        如果加了capture,时间的处理在捕获阶段就开始处理)
        5.self:只有event.target 是当前操作的元素时才触发事件
        6.passive:事件的默认行为立即执行,无须等待事件回调完毕再执行。
    -->

    <div id="root" >
        <!--Vue里面阻止默认行为 @click.prevent-->
        <a href="http://www.baidu.com" @click.prevent="showInfo">点我提示信息</a>

        <!--Vue里面阻止事件冒泡 意思点击button 也会把事件冒泡到父级元素-->
        <div  @click="showInfo" class="demo1">
            <button @click.stop="showInfo">阻止冒泡</button>
        </div>

        <!--事件只触发一次-->
        <button @click.once="showInfo">once让事件只触发一次</button>
        <!--事件先捕获,然后冒泡。事件的处理是在冒泡阶段处理的。capture-->
    </div>

    <script>
        new Vue({
            el:'#root',
            data:{
            },
            methods:{
                showInfo(){
                    //showInfo(e) e.preventDefault()//原生的这个函数也可以用来阻止默认行为
                    //showInfo(e) e.stopPropagation() //原生的这个函数也可以用来阻止冒泡
                    alert("阻止行为!")
                }
          }
        })
    </script>
</body>
</html>

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值