ng-repeat过滤器,在过滤器删除了对象时显示消息

时间:2018-03-05 11:36:58

标签: angularjs angularjs-ng-repeat angularjs-filter

我的一些人是忍者,有些人不是。

如果不是,我想显示this guy isn't a ninja消息。

现在,没有任何东西在显示。我是否错误地使用过滤器?

我想在视图中处理此问题,而不向控制器添加任何新逻辑。

<div ng-repeat="person in people | filter: {job: 'ninja'}">
    <div ng-show="person">
        This guy is a ninja
    </div>
    <div ng-show="!person">
        This guy isn't a ninja <--Not showing 
    </div>
</div>

3 个答案:

答案 0 :(得分:0)

你不是在寻找一个过滤器,你正在寻找一个&#34; ng-show&#34;语句:

<div ng-repeat="person in people">
    <div ng-show="person.job === 'ninja'">
        This guy is a ninja
    </div>
    <div ng-show="person.job !== 'ninja'">
        This guy isn't a ninja
    </div>
</div>

<强>&GT; Demo fiddle

答案 1 :(得分:0)

您目前正在过滤掉每个没有这份工作的人ninja。如果您希望{ng重复中显示ninjanon-ninja,则必须删除过滤器并使用ng-show来确定显示的内容。

<div ng-repeat="person in people">
    <div ng-show="person.job === 'ninja'">
        This guy is a ninja
    </div>
    <div ng-show="person.job !== 'ninja'">
        This guy isn't a ninja 
    </div>
</div>

答案 2 :(得分:0)

移动这些案例并使用ng-show进行处理我不会建议您将来遇到更多案例,这样您可能会使用切换案例,当您过滤数据时,您只剩下过滤器结果数组是过滤器后面的新数组

<div ng-repeat="person in people ">
    <div ng-switch="person">
  <div ng-switch-when="ninja">this is Ninja</div>
  <div ng-switch-default>this is not ninja</div>
</div>