• AngularJS中自定义过滤器


    AngularJS中为我们提供了一些内置的过滤器,这里列举一些自定义过滤器的场景。

    自定义过滤器,不带参赛

    //过滤 不带参赛
    app.filter('ordinal', function () {
        return function (number) {
            if (isNaN(number) || number < 1) {
                return number;
            } else {
                var lastDigit = number % 10;
                if (lastDigit === 1) {
                    return number + 'st'
                } else if (lastDigit === 2) {
                    return number + 'nd'
                } else if (lastDigit === 3) {
                    return number + 'rd'
                } else if (lastDigit > 3) {
                    return number + 'th'
                }
            }
        }
    });

    大致这样使用:

    {{777 | ordinal}}

    过滤 带参赛



    把某个位置上的字母转换成大写。

    //过滤 带参赛
    app.filter('capitalize', function () {
        //input 需要过滤的元素
        //char位置,索引减一
        return function (input, char) {
            if (isNaN(input)) {
                //如果序号位置没有设置,索引位置默认是0
                var char = char - 1 || 0;
                //把过滤元素索引位置上的字母转换成大写
                var letter = input.charAt(char).toUpperCase();
                var out = [];
                for (var i = 0; i < input.length; i++) {
                    if (i == char) {
                        out.push(letter);
                    } else {
                        out.push(input[i]);
                    }
                }
                return out.join('');
            } else {
                return input;
            }
        }
    });

     大致这样使用:

    {{'seven' | capitalize:3}}

    过滤集合

    过滤出集合中满足某种条件的元素。

    var app = angular.module('filters', []);
    
    app.controller('demo', function ($scope) {
    
        $scope.languages = [
            {name: 'C#', type: 'static'},
            {name: 'PHP', type: 'dynamic'},
            {name: 'Go', type: 'static'},
            {name: 'JavaScript', type: 'dynamic'},
            {name: 'Rust', type: 'static'}
        ];
    });
    
    //过滤集合
    app.filter('staticLanguage', function () {
        return function (input) {
            var out = [];
    
            angular.forEach(input, function (language) {
                if (language.type === 'static') {
                    out.push(language);
                }
            });
    
            return out;
        }
    });

    大致这样使用:


    <li ng-repeat="lang in languages | staticLanguage">{{lang.name}}</li>

    过滤,带多个参数,做多件事



    定义数字的显示单位和显示位置。

    var app = angular.module('filters', []);
    
    app.controller('demo', function ($scope) {
        $scope.digit = 29.88;
    });
    
    
    
    //过滤 做多件事 多个参赛
    app.filter('customCurrency', function () {
        return function (input, symbol, place) {
            if (isNaN(input)) {
                return input;
            } else {
                //检查symbol是否有实参
                var symbol = symbol || '¥';
                var place = place === undefined ? true : place;
    
                if(place===true){
                    return symbol+input;
                }else{
                    return input + symbol;
                }
            }
        }
    });

    大致这样使用:

    <p><strong>Original:</strong></p>
    <ul><li>{{digit}}</li></ul>
    <p><strong>Custom Currency Filter</strong></p>
    <ul>
      <li>{{digit | customCurrency}} --Default</li>
      <li>{{digit | customCurrency:'元'}} --custom symbol</li>
      <li>{{digit | customCurrency:'元':false}} -- custom symbol and custom location</li>
    </ul>
  • 相关阅读:
    powershell命令大全
    Android USB Connections Explained: MTP, PTP, and USB Mass Storage
    安装Windows Metasploit Framework
    Sublime Text2 jedi插件离线安装
    MySQL下载安装配置和Navicat for MySQL的安装配置
    Sublime中文编码问题
    Flask入门之结构重组(瘦身)-第13讲笔记
    Flask入门之SQLAlchemy配置与数据库连接
    Flask入门之flask-wtf表单处理
    Total Command使用笔记
  • 原文地址:https://www.cnblogs.com/darrenji/p/5081493.html
Copyright © 2020-2023  润新知