首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自动以角度显示文本一、二、三等

自动以角度显示文本一、二、三等
EN

Stack Overflow用户
提问于 2016-06-17 14:21:24
回答 2查看 150关注 0票数 1

我有下面的代码片段,可以根据parent repeat中的数字创建1,2,3等(都很好)。

代码语言:javascript
复制
{{$index+1}}

但是我正在寻找像1,2,3等这样的文本

有没有办法在Angular中做到这一点?(文本而不是数字)

EN

Stack Overflow用户

发布于 2016-06-17 14:47:24

一种解决方案是创建一个过滤器,例如:

代码语言:javascript
复制
// Script.js
angular.module('app')
    .filter('numberToWord', function() {
        return function( s ) {

            var th = ['','thousand','million', 'billion','trillion'];
            var dg = ['zero','one','two','three','four', 'five','six','seven','eight','nine']; 
            var tn = ['ten','eleven','twelve','thirteen', 'fourteen','fifteen','sixteen', 'seventeen','eighteen','nineteen'];
            var tw = ['twenty','thirty','forty','fifty', 'sixty','seventy','eighty','ninety'];

            s = s.toString(); 
            s = s.replace(/[\, ]/g,''); 
            if (s != parseFloat(s)) return 'not a number'; 
            var x = s.indexOf('.'); 
            if (x == -1) x = s.length; 
            if (x > 15) return 'too big'; 
            var n = s.split(''); 
            var str = ''; 
            var sk = 0; 
            for (var i=0; i < x; i++) 
            {
                if ((x-i)%3==2) 
                {
                    if (n[i] == '1') 
                    {
                        str += tn[Number(n[i+1])] + ' '; 
                        i++; 
                        sk=1;
                    }
                    else if (n[i]!=0) 
                    {
                        str += tw[n[i]-2] + ' ';
                        sk=1;
                    }
                }
                else if (n[i]!=0) 
                {
                    str += dg[n[i]] +' '; 
                    if ((x-i)%3==0) str += 'hundred ';
                    sk=1;
                }

                if ((x-i)%3==1)
                {
                    if (sk) str += th[(x-i-1)/3] + ' ';
                    sk=0;
                }
            }
            if (x != s.length)
            {
                var y = s.length; 
                str += 'point '; 
                for (var i=x+1; i<y; i++) str += dg[n[i]] +' ';
            }
            return str.replace(/\s+/g,' ');
        };
    })

然后你可以像这样使用它:

代码语言:javascript
复制
{{$index | numberToWord }}

编辑:示例柱塞http://plnkr.co/edit/DIQ3YVkH7N6PUaqju82X?p=preview

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37874486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档