主要目标:在输入框中,数字应以字词转换。 现在,它只显示文本框中的数字,而不是转换。
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>
请告诉给我建议我要去的地方错了。提前致谢。
我能够没有任何问题运行代码见链接https://plnkr.co/edit/Hp8hbYNx99FYOvXkteqO?p=preview –
@ JeetendraChauhan.Yeah。它的工作原理是如果你将值赋给Init函数,但是当PHP变量分配给Init函数时它不工作。它只是显示数字。 – user007
你可以请检查你的铬调试器的网络窗格中你呈现的HTML是什么 –