【问题标题】:Angularjs - Show True/False as Yes/NoAngularjs - 将真/假显示为是/否
【发布时间】:2014-10-02 14:01:15
【问题描述】:

有没有一种简单的方法可以将真/假值显示为是/否?

我正在从数据库中检索一个 JSON,其中包含:

[对象,对象,“WithCertification”:真]

这是html:

有认证{{elem.WithCertification}}

正在显示这个:

认证为真

我希望它显示这个:

有认证是的

有没有办法不用去控制器把真/假改成是/否?

无论如何我需要改变它,有什么建议吗?

谢谢。

【问题讨论】:

  • 为什么要对帖子投反对票?

标签: javascript angularjs


【解决方案1】:

您可以在Angular Expressions 中包含ternary operators,所以只需这样做:

With Certification {{elem.WithCertification?'yes':'no'}}

【讨论】:

  • 非常感谢。解决了我的问题。太棒了!
【解决方案2】:
{{elem.WithCertification == true ? "Yes" : "No"}}

【讨论】:

    【解决方案3】:

    您可以使用过滤器或三元运算符。从我读过的三元运算符不赞成的情况来看,过滤器可能会更好。

    app.filter('YesNo', function(){
            return function(text){
              return text ? "Yes" : "No";
            }
          })
    

    代码相当简单,设置你的 app.filter,给它一个名字,在里面传递一个匿名函数,返回一个函数,将你的 true,false 作为参数,然后返回文本并确定是 true 还是 false,如果true 返回是,否则返回否。

    或者在标签内进行。

    <td>{{item.value ? "Yes":"No"}}</td>
    

    你可以在这里看到这个工作http://plnkr.co/edit/altgrjKhXHACmczOvGFw

    【讨论】:

      【解决方案4】:

      最好的方法是创建一个自定义过滤器,因为最好在视图中放置尽可能少的逻辑。下面是一个示例代码,向您展示如何实现这一点。

      angular.module('myApp', [])
      .filter('yesOrNo', function() {
      return function(input) {
        return input === 'true' ? 'yes' : 'no' ;
      };
      })
      

      在 html 中,您只需:-

      With Certification {{elem.WithCertification | yesOrNo}}
      

      【讨论】:

      • 为什么投反对票?如果否决票是因为我建议创建一个过滤器,请参阅我对 Remco 的回答的回复。我坚持我的说法,即创建过滤器是这里的最佳选择。诚然,您可能需要多写 6 行代码,但这是值得的。
      • 首先:像这样的过滤器是多余的,特别是因为你唯一要做的就是三元运算符,如果你使用额外的逻辑会使角度表达式难以阅读,或者使用你不能在角度表达式中拥有的javascript代码,这将是另一个故事,并且有一个 $filter 将是要走的路。第二:在视图中,您使用的是名为“yesOrNo”的过滤器,但您定义的过滤器称为“myFilter”。
      • 对不起,我的错!打错字了,编辑一下。但是关于过滤器是一种矫枉过正,我不同意。 Angularjs 本身具有内置的过滤器,例如小写、大写,它们只是用于转换大小写。
      • 那么至少你应该有他'yes'-'no'作为参数,你提到的过滤器不能与这个相比。
      • 既然您修复了过滤器的名称,我将删除我的反对票。
      【解决方案5】:

      如果这是一次性案例,我同意Joseps answer。使用:

      With Certification {{elem.WithCertification?'yes':'no'}}
      

      但是,如果您打算更频繁地使用它,我建议您使用过滤器。 the AngularJS tutorial step 9

      中解释了一个非常相似的案例

      【讨论】:

      • 它提醒我这与教程中的情况完全相同。可能有用
      • 是的,为什么不呢。如果相同的逻辑使用超过 2-3 个地方,最好创建一个过滤器。您永远不知道需求何时发生变化(例如将 undefined 视为可能,但听起来可能很荒谬),并想象在所有使用它的地方都更改此逻辑。
      • 在我看来,这样的过滤器有点过头了,特别是因为我们唯一要做的就是三元运算符,如果我们使用额外的逻辑会使角度表达式难以阅读,或者使用你不能在角度表达式中使用的javascript代码,这将是另一个故事,并且有一个 $filter 将是要走的路......但在这种情况下,一个 $filter 是一种矫枉过正。
      猜你喜欢
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-15
      • 1970-01-01
      • 2018-07-01
      相关资源
      最近更新 更多