Vue2学习笔记
阅读原文时间:2023年07月08日阅读:1

1、插值语法:

1.1、功能:

用于解析标签体内容

1.2、写法:

{{ xxx }},xxx是js表达式,且可以直接读取到data中的所有属性。

2、收集表单数据

  • 若:,则 v-model 收集的是 value 值,用户输入的就是 value 值。

  • 若:,则 v-model 收集的是 value 值,且要给标签配置 value 值。

  • 若:

    • 1.没有配置 inpu t的 value 属性,那么收集的就是 checked(勾选 or 未勾选,是布尔值)

    • 2.配置 input 的 value 属性:

    • (1) v-model 的初始值是非数组,那么收集的就是checked(勾选 or 未勾选,是布尔值)

    • (2)v-model 的初始值是数组,那么收集的的就是 value 组成的数组

  • v-model 的三个修饰符:

    • lazy:失去焦点再收集数据

    • number:输入字符串转为有效的数字

    • trim:输入首尾空格过滤 

3、过滤器

3.1、定义:

对要显示的数据进行特定格式化后再显示(适用于一些简单逻辑的处理)

3.2、语法:

  • 注册过滤器:Vue.filter(name,callback)(局部过滤器)new Vue{filters:{}}(全局过滤器)

  • 使用过滤器:{{ xxx | 过滤器名}}v-bind:属性 = "xxx | 过滤器名"

3.3、栗子:时间戳转换为自定义格式

HTML 代码:



显示格式化后的时间

现在是:{{fmtTime}}

现在是:{{getFmtTime()}}

现在是:{{time | timeFormater}}

现在是:{{time | timeFormater('YYYY_MM_DD') | mySlice}}

大美女

    <!-- 用于定义全局过滤器 -->  
    <div id="root2">  
        <h2>{{msg | mySlice}}</h2>  
    </div>

Vue 代码:

//全局过滤器
Vue.filter('mySlice',function(value){
return value.slice(0,4)
})

    new Vue({  
        el:'#root',  
        data:{  
            time:1621561377603, //时间戳  
            msg:'你好,尚硅谷'  
        },  
        // 计算属性  
        computed: {  
            fmtTime(){  
                return dayjs(this.time).format('YYYY年MM月DD日 HH:mm:ss')  
            }  
        },  
        // 方法  
        methods: {  
            getFmtTime(){  
                return dayjs(this.time).format('YYYY年MM月DD日 HH:mm:ss')  
            }  
        },  
        //局部过滤器  
        filters:{  
            timeFormater(value,str='YYYY年MM月DD日 HH:mm:ss'){  
                // console.log('@',value)  
                return dayjs(value).format(str)  
            }  
        }  
    })

    new Vue({  
        el:'#root2',  
        data:{  
            msg:'hello,atguigu!'  
        }  
    })

4、指令语法

4.1、功能:

用于解析标签(包括:标签属性、标签体内容、绑定事件…..)。

4.2、定义语法:

  • 局部指令:

new Vue({ directives:{指令名:配置对象 } })

new Vue({ directives{指令名:回调函数 } })

  • 全局指令:

Vue.directive(指令名,配置对象) 或 Vue.directive(指令名,回调函数)

4.3、使用:

v-bind:href="xxx" 或 简写为 :href="xxx"xxx 同样要写 js 表达式,且可以直接读取到 data 中的所有属性。

4.3、栗子备注:

  1. Vue中有很多的指令,且形式都是:v-自定义名称,此处我们只是拿 v-bind 举个例子
  2. 指令定义时不加 v- ,但使用时要加 v- ;
  3. 指令名如果是多个单词,要使用 kebab-case 命名方式,不要用 camelCase 命名。

4.4、栗子:定义一个v-big指令,和v-text功能类似,但会把绑定的数值放大10倍。

HTML 代码:

{{name}}

当前的n值是:

  

放大10倍后的n值是:


Vue 代码:

new Vue({
el:'#root',
data:{
name:'尚硅谷',
n:1
},
directives:{
//big函数何时会被调用?1.指令与元素成功绑定时(一上来)。2.指令所在的模板被重新解析时。
// element:DOM元素,binding:传过来的值
big(element,binding){
console.log('big',this) //注意此处的this是window
// console.log('big')
element.innerText = binding.value * 10
},
fbind:{
//指令与元素成功绑定时(一上来)
bind(element,binding){
element.value = binding.value
},
//指令所在元素被插入页面时
inserted(element,binding){
element.focus()
},
//指令所在的模板被重新解析时
update(element,binding){
element.value = binding.value
}
}
}
})