Loading

Vue 过滤器

过滤器的作用:

格式化数据,比如将字符串格式化为首字母大写,将日期格式化为指定的格式等。

 自定义过滤器:

    Vue.filter('过滤器名称', function(value){
    // 过滤器业务逻辑

    })

 过滤器的使用

 <div>{{msg | upper}}</div>
  <div>{{msg | upper | lower}}</div>
  <div v-bind:id='id | formatId' ></div>

案例:(全局过滤器)

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>

<body>
  <div id='app'>
    <div><input type="text" v-model='msg'></div>
    <div>{{msg | upper}}</div>
  </div>

  <script>
    Vue.filter('upper', function (value) {
      // 过滤器业务逻辑
      // 首字母大写
      return value.charAt(0).toUpperCase() + value.slice(1)
    })
    var vm = new Vue({
      el: '#app',
      data: {
        msg:''
      },
      methods: {

      }
    })
  </script>
</body>

</html>

 局部过滤器:

只能在当前文件内生效

案例:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>

<body>
  <div id='app'>
    <div><input type="text" v-model='msg'></div>
    <div>{{msg | upper}}</div>
  </div>

  <script>
    var vm = new Vue({
      el: '#app',
      data: {
        msg: ''
      },
      filters: {
        upper: function () {
          // 过滤器业务逻辑
          // 首字母大写
          return value.charAt(0).toUpperCase() + value.slice(1)
        }
      }
    })
  </script>
</body>

</html>

 


 

带参数的过滤器:

Vue.filter('format', function (value, arg) {

// value 就是过滤器传递过来的参数

过滤器的使用:

<div> {{date | format('YYYY-MM-dd' }} </div>

案例:使用过滤器格式化日期

 

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5   <meta charset="UTF-8">
 6   <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7   <meta http-equiv="X-UA-Compatible" content="ie=edge">
 8   <title>Document</title>
 9   <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
10 </head>
11 
12 <body>
13   <div id='app'>
14 
15     <div>{{date | format("YYYY-MM-dd")}}</div>
16 
17   </div>
18 
19   <script>
20     var vm = new Vue({
21       el: '#app',
22       data: {
23         date: new Date()
24       },
25       filters: {
26         format: function (value, arg) {
27           console.log('time', value, 'arg', arg)
28           if (arg === 'YYYY-MM-dd') {
29             var ret = ''
30             ret += value.getFullYear() + '-' + (value.getMonth() + 1) + '-' + value.getDate()
31           }
32           return ret
33         }
34       }
35     })
36   </script>
37 </body>
38 
39 </html>

 

posted @ 2019-11-02 16:45  fsdffsdf  阅读(215)  评论(0编辑  收藏  举报