美文网首页
vue学习笔记(5):filter过滤器,padStart/En

vue学习笔记(5):filter过滤器,padStart/En

作者: 不会改变 | 来源:发表于2019-12-30 21:19 被阅读0次

    data{

    msg:'曾经,我也是一个单纯的少年,单纯的我傻傻的问,谁是世界上最单纯的男人'

    }

    1.filter:过滤

    例子:var newList = this.list.filter(item=>{

    if(item.name.includes(keywords))

    return item;

    })

    注意:es6中,为字符串提供了一个新方法,叫做String.prototype.includes("要包含的字符串"),如果包含则返回true

    2.过滤调用的格式{{ name | nameope}}

    3.过滤器的定义语法:

    过滤器的function,第一个参数,已经被规定死了,永远是管道符前面传递过来的数据

    vue.filter('过滤器的名称',function(data){

    return data + "123"

    })

    例子:<p>{{msg | msgFormat('123')}}</p>

    Vue.filter('msgFormat',function(msg,arg){

    return msg.replace('/单纯/g','arg')

    })

    注意:1.字符串的replace方法,第一个参数,除了可以写字符串之外,还可以写正则

    2.过滤器可以传递多个参数,先调用第一个,结果再调用第二个依次类推

    4.过滤器进行时间的格式化

    <p>{{item.ctime | dateFormat(yy-MM-DD)}}</p>

    Vue.filter('dateFormat',function(dateStr,pattern=""){

    //根据给定时间字符串,得到特定的时间,形参可以传递一个默认值,es6,如果页面不传的话,patter是undefined,会报错所以给一个默认值

    var dt = new Date(dateStr)

    //yyyy-mm-dd

    var y = dt.getFullYear()

    var m = dt.getMonth() + 1

    var d = dt.getDate

    //toLowerCase(变成小写)

    if(pattern.toLowerCase() === 'yyyy-mm-dd'){

    return `$(y)-$(m)-$(d)`

    }else{

    var hh = dt.getHours()

    var mm = dt.getMinutes()

    var ss = dt.getSeconds()

    return `$(y)-$(m)-$(d) $(hh):$(mm):$(ss)`

    }

    })

    5.filters:私有的过滤器,写在组件中的,过滤器调用的时候,采用的是就近原则,如果私有过滤器和全局过滤器名称一致,这时候优先调用私有过滤器

    filters:{

    过滤器的名称:function(){}

    }

    6.String.prototype.padStart/End:填充字符串

    StringpadStart(maxLength填充完毕后字符串长度,fillString用什么填充)用于当时间是08,09之类的前面0不显示的时候用的

    例子:var m = (dt.getMonth() + 1).toString().padStart(2,0)

    注意,只能是字符串用,所以先转换为字符串

    7.按键修饰符

    vue提供的.enter,.tab,.delete,.esc,.space,.up,.down,.left,.right没有提供的可以吧键盘码值写上

    例子:<input type="text"  v-model="name" @keyup.enter ="add()">点击回车触发添加事件

    自定义全局案件修饰符

    Vue.config.keyCodes.f2 = 113

    8.自定义指令默认获取焦点

    注意:vue中所有的指令在调用的时候都以v-开头

    例子:<input type="text"  v-model="name" @keyup.enter ="add()" v-focus>

    使用Vue.dirctive()定义全局的指令,注意,在定义的时候,指令的名称前面,不需要加v-前缀,在调用的时候,必须在指令名称前加上v-前缀来进行调用,参数2是一个对象,身上有一些指令相关的函数,这些函数可以在特定的阶段,执行相关的操作

    Vue.directive('focus',{

    bind:function(el){

    //每当指令立即绑定到元素上的时候,会立即执行这个bind函数,只执行一次

    //注意:在每个函数中,第一个参数,永远是el,表示被绑定了指定的那个元素,这个el参数,是一个原生的JS对象

    //在元素刚绑定了指令的时候,还没有插入到dom中去,这时候,调用用focus方法没有作用,因为一个元素只有插入到dom之后,才能获取焦点

    //el.focus()

    }

    inserted:function(el){

    //表示元素插入到DOM中的时候会执行inserted函数,只执行一次

    //和JS行为有关的操作,最好在inserted中去执行,防止JS行为不生效

    el.focus()

    }

    update:function(el){

    //当组件更新的时候,会执行update,可能会触发多次}

    })

    9.自定义一个设置字体颜色的指令

    例子:<input type="text"  v-model="name" @keyup.enter ="add()" v-focus v-color>

    Vue.directive('color',{

    //样式,只要通过指令绑定给了元素,不管这个元素有没有被插入到页面中去,这个元素肯定有了一个内联的样式

    //和样式相关的操作一般都可以在bind中使用

    bind:function(el){

    el.style.color = 'red'

    }

    })

    10.https://cn.vuejs.org/v2/guide/custom-directive.html
    例子:<input type="text"  v-model="name" @keyup.enter ="add()" v-focus v-color=" 'blue' ">

    Vue.directive('color',{

    bind:function(el,binding){

    el.style.color = binding.value

    //console.log(binding.value)输出的是blue

    //console.log(binding.expression)输出的是'blue'

    }

    })

    11.定义私有指令

    directive:{

    //在组件中写的

    'fontweight':{

    bind:function(){

    el.style.fontWeight = binding.value

    }

    inserted:function(){

    }

    }

    }

    12.指令函数的简写模式

    directive:{

    'fontsize':function(el,binding){

    //注意这个function等同于把代码写到bind和update中去

    //el.style.fontSize = binding.value

    el.style.fontSize = parseInt(binding.value)+'px'

    }

    }

    相关文章

      网友评论

          本文标题:vue学习笔记(5):filter过滤器,padStart/En

          本文链接:https://www.haomeiwen.com/subject/qwgmoctx.html