vue复习(过滤器、自定义指令、vue中操作Dom)

一、过滤器

使用的地方

过滤器:过滤器可以用在两个地方:双花括号插值 和 v-bind 表达式 (后者从 2.1.0+ 开始支持)。

代码推进
<!DOCTYPE html>
<html lang="en">
    <head>
        <title></title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    </head>
    <body>
        <div id="app">
            <!-- 管道后面的可以写n个过滤器,第一个过滤器的结果交给第二个过滤器处理,最后的结果展现在页面上 -->
            {{ msg | msgfilter("美丽") |test }}
        </div>
        <script>
            Vue.filter('msgfilter',(data,arg)=>{
                return data.replace(/单纯/g,arg)
            })
            Vue.filter('test',(data)=>{
                return data+"=========="
            })
            var vm = new Vue({
                el: '#app',
                data: {
                    msg:'我是曾经也是一个单纯的少年,单纯的我,单纯的向老天发问,谁是这个世界上最单纯的人'
                },
                methods:{},
                filters:{}})
        </script>
    </body>
</html>
补充 ES6 padstart自动填充(一般用在时间过滤上面)
字符串.padStart(填充位数,"填充内容")
    "12".padStart(3,'0')----->012 

二、自定义指令

自定义全局的指令&私有指令

全局的指令
使用Vue .directive() 定义全局的指令 V- focus

共中:参数1 :指令的名称, 注意,在定义的时候 ,
           指令的名称前面 ,不需要加 v-前缀,
           
//但是:在调用的时候,必须在指令名称前加上v-前缀来进行调用

// 参数2:晕个对象,这个对象身上,有一些指令相关的函数,
              这些函数可以在特定的阶段,执行相关的操作
Vue . directive ( focus',{
bind: function (e1) { // 每当指令绑定到元素上的时候,会立即执行这个bind 函数,只执行-次
//注意:在每个函数中,第一个参数,永远是el,表示被绑定了指令的那个元素,这个el参数,是一个原生的JS对象
//在元素刚绑定了指令的时候,还没有插入到DOM中去,这时候,调用focus方法没有作用
// 因为,一个元素,只有插入DOM之后,才能获取焦点
// el. focus () 
},
inserted: function (e1) { // inserted 表示元素插入到DOM中的时候,会执行inserted 函数[触发1次]
el. focus () 
},
updated: function () { // 当VNode更新的时候,会执行updated ,可能会触发多次
自定义指令
directives: {//自定义私有指令
	' fontweight': { // 设置字体粗细的
	bind: function (e1, binding) {
	el.style.fontWeight = binding.value
	}
},
	'fontsize': function (el, binding) { //注意:这个function 等同于把代码写到了bind 和update中去
	el.style.fontsize = parseInt (binding.value) + 'px '
  }
}

三、vue中操作Dom

一般来讲,获取DOM元素,需document.querySelector(".input1")获取这个dom节点,然后在获取input1的值。

但是用ref绑定之后,我们就不需要在获取dom节点了,直接在上面的input上绑定input1,然后$refs里面调用就行。 直接将DOM节点存到内存中,可以直接调用,不需要再经过DOM树形查找,提升了性能

然后在javascript里面这样调用:this.$refs.input1这样就可以减少获取dom节点的消耗了

1、绑定
<div id="app">
  <input type="text" ref="input1"/>
  <button @click="add">添加</button>
</div>
2、操作DOM
<script>
new Vue({
  el: "#app",
  methods:{
  add:function(){
    this.$refs.input1.value ="test"; //this.$refs.input1 减少获取dom节点的消耗
    }
  }
})
</script>
发布了24 篇原创文章 · 获赞 6 · 访问量 4101

猜你喜欢

转载自blog.csdn.net/qq_42714690/article/details/104547259