2014-10-03 48 views
5

我在我的模板中创建了一个ng-bind元素,该元素显示一个以小数点后四舍五入的数字。我如何在ng-bind逻辑内添加一个%到它的末尾?AngularJS ng-bind需要显示变量+“字符串”

我的代码:

<span ng-bind="variable | number: 1" 
     class="animated" ng-show="variable" 
     ng-class="{'fadeIn':variable}"></span> 

结果(例如)4.5,但我希望它是4.5%

事情是,我想添加一个%字符的结尾,但如何?我宁愿不添加第二个跨度,使用完全相同的逻辑,仅针对那个字符,并且ng-bind="variable + '%' | number: 1"不起作用。我也想在我的控制器/指令中避免额外的代码,因为我认为这更多的是模板的东西(我只需要使用它几次)。

+1

您可以使用插值' {{variable |编号:1}}%'或者创建/使用百分比过滤器...或者创建一个自定义过滤器来完成舍入数字和添加百分比。 +'%'“' – PSL 2014-10-03 12:41:17

+0

前两个建议有点”过度“,因为我在整个项目中只需要这3-4次。但是你说的最后一件事正是我想要的。效果很好。谢谢。你可以把这个文件作为答案,所以我可以将它标记为这样。 – 2014-10-03 12:48:33

+0

如果你在'ng-bind'中使用它或者使用插值...没有任何矫枉过正的话,两者几乎都是相同的。使用过滤器是的,如果你不需要做更复杂的东西就可以了。 – PSL 2014-10-03 12:50:37

回答

13

问题是你正在给数字过滤器发送无效号码。相反,您可以在完成数字过滤之后将添加的百分比移动到最后。

<span ng-bind="(variable | number: 1) + '%'" 
    class="animated" ng-show="variable" 
    ng-class="{'fadeIn':variable}"></span> 

或者使用插值

<span class="animated" ng-show="variable" ng-class="{'fadeIn':variable}">{{variable | number: 1}}%</span> 

Demo

或者你甚至可以创建一个过滤器,执行舍入数和另外的%的,只是使用过滤器或其他自定义过滤器添加一个百分比(只要确保它不是过度杀伤,除非你需要在很多地方做到这一点)。