在角度如何根据数字条件写字符串

时间:2016-06-20 02:01:53

标签: javascript angularjs angularjs-directive angular angularjs-scope

我有{{ index+1 }}

我需要显示"一个"如果上面的表达式中的数字为1。

显示"两个"如果上面的表达式中的数字是2,那么最多为6 显示"六"如果数字是6。

由于我只需要这些1到6,所以我不喜欢使用基于JavaScript的数字到字格式转换并将其用作上述表达式中的过滤器。因为,grunt报告了该解决方案中的大量问题,所以我正在寻找一个简单的条件显示,仅用于1-6之间的这个边界。

2 个答案:

答案 0 :(得分:2)

我会使用过滤器执行此操作,但您也可以使用函数。

一个函数的例子是:

{{vm.convertToWord(1)}}

会打电话给这个并给出一个'

    var smallNumbers = ["zero", "one", "two", "three", "four", "five", "six"];
    vm.convertToWord = function(input) {
      input = parseInt(input, 10);
      if (input < smallNumbers.length) {
        return smallNumbers[input];
      } else {
        return "not valid";
      }
    };

有关使用过滤器和函数的示例,请参阅此Codepen

答案 1 :(得分:0)

有时当我遇到小边缘情况时,我只会将内容包装在<span>标记中,并使用ng-if指令使其显示在正确的条件下。

要将六个边缘情况压缩成一行,您只需使用数组评估,因为{{["one", "two"][0]}}将评估为one

结合这些想法我们得到类似的东西:

<span ng-if="0 <= index && index <= 5"> {{["one", "two", "three", "four", "five", "six"][index]}}</span>
<span ng-if="index < 0 || index > 5">{{index + 1}}</span>