全局过滤器和局部过滤器

1.全局过滤器

<div id="app">

    <h2>{{price | currecy('#')}}</h2>

    <h2>{{price | decimal(2)}}</h2>

    <h2>{{price | decimal(1) | currecy('$')}}</h2>

    <h2>{{username | capitalize}}</h2>

    <h2>{{money | thousandthPercentile}}</h2>

  </div>

  <script src="./vue.js"></script>

  <script>

    // | 读作管道

    //全局注册过滤器

    // Vue.filter(过滤器名称, 处理函数)

    //定义货币格式化

    Vue.filter('currecy', (v, char) => {

      console.log('v ==> ', v);

      //v: 需要格式化的数据

      //char: 其他货币符号

      return char + v;

    })

    Vue.filter('decimal', (v, n) => {

      //v: 需要格式化的数据

      //n: 小数位

      return v.toFixed(n);

    })

    //首字母大写过滤器 ivEn

    Vue.filter('capitalize', v => {

      return v[0].toUpperCase() + v.slice(1).toLowerCase();

    })

    //处理千分位过滤器 98261652.89267 ==> 98,261,652.89267

    //toLocaleString(): 千分处理在安卓不支持

    Vue.filter('thousandthPercentile', v => {

      console.log('v ==> ', v);

      //切割,分为整数部分和小数部分

      let nums = v.toString().split('.');

      console.log('nums ==> ', nums);

      //整数部分 

      let ints = nums[0];

      //a = 98261652

      // i = 7

      // a.slice(i - 2, i + 1) ==> slice(5, 8)

      // i = 4

      //a.slice(i - 2, i + 1) ==> slice(2, 5)

      // i = 1

      //a.slice(i - 2, i + 1) ==> slice(-1, 2) 如果 i - 2 <= 0, 从零开始

      let intNums = [];

      for (let i = ints.length - 1; i >= 0; i -= 3) {

        let index = i - 2 <= 0 ? 0 : i - 2;

        let int = ints.slice(index, i + 1);

        intNums.unshift(int);

      }

      intNums = intNums.join(',');

      console.log('intNums ==> ', intNums);

      //判断是否存在小数

      if (nums[1] !== undefined) {

        intNums = `${intNums}.${nums[1]}`;

      }

      return intNums;

    })

    new Vue({

      el: '#app',

      data: {

        price: 500,

        username: 'kevin',

        money: 98261652.89267

      }

    })

  </script>

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容