2016-06-09 49 views
0

主要目标:在输入框中,数字应以字词转换。 现在,它只显示文本框中的数字,而不是转换。
HTML:Angular JS:将数字转换为Word未显示正在工作

<div ng-app="app" ng-controller="myCtrl"> 
    <span ng-init="W_cst='<?php echo $Cex; ?>'">{{W_cst | words}}</span> 
</div> 

PHP:

<?php 
$cex=125; 

?> 

角JS:

<script> 
var app = angular.module('app',[]); 
app.controller('myCtrl',function($scope){ 
$scope.cst=function(){ 
     var t; 
     t=100; 
     return t*0.125; 
    } 
    }); 
app.filter('words', function() { 
    function isInteger(x) { 
     return x % 1 === 0; 
    } 


    return function(value) { 
    if (value && isInteger(value)) 
     return toWords(value); 

    return value; 
    }; 

}); 


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']; 


function toWords(s) 
{ 
    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,' '); 
} 

window.toWords = toWords; 
</script> 

请告诉给我建议我要去的地方错了。提前致谢。

+0

我能够没有任何问题运行代码见链接https://plnkr.co/edit/Hp8hbYNx99FYOvXkteqO?p=preview –

+0

@ JeetendraChauhan.Yeah。它的工作原理是如果你将值赋给Init函数,但是当PHP变量分配给Init函数时它不工作。它只是显示数字。 – user007

+0

你可以请检查你的铬调试器的网络窗格中你呈现的HTML是什么 –

回答

0

这不是正确使用ng-value,该指令应该用于<option>input[radio]元素。请参阅ng-value文档:https://docs.angularjs.org/api/ng/directive/ngValue

您需要使用ng-model将输入的值存储到文本字段的某处。然后,您可以使用函数来读取该值,将其转换为单词并返回字符串。

我创建了一个简单的例子在这里:https://jsfiddle.net/aza2xprp/

+0

我现在编辑了代码,实际上,$ cex是PHP变量。现在,它也只是显示数字,而不是转换。 – user007