AngularJS - ng-repeat 条件

AngularJS - ng-repeat with a condition

我有一个问题列表要显示。

我想在有描述的问题旁边添加一个问号图标。

    <ul class="list-group" data-toggle="items" ng-repeat="ques in questions">
    <li class="list-group-item"><input type="checkbox" /> {{ques.question}} 
        <div ng-if="{{ques.description}}">
            <i class="glyphicon glyphicon-question-sign" title="{{ques.description}}"></i>
        </div>
    </li>
    </ul>

所以我添加了所有问题,当它有描述时我想添加一个图标。

上面的代码不起作用,如果你能帮忙的话!

感谢

ng-if="ques.description"

没有花括号,应该这样做,使用最新版本的 angular.js (>1.1)

更多信息,请查看ng-if official documentation


However, if you are using an older version of angular.js, you cannot use the ng-if directive. It would explain why your glyphicon is always displayed, regardless of the ng-if condition.

如果是这种情况,这里有一个解决方法:

<div ng-switch="ques.description==null">
   <i ng-switch-when="false" class="glyphicon glyphicon-question-sign" title="{{ques.description}}"></i>
</div>

尝试换行:

<div ng-if="{{ques.description}}">

至:

<div ng-if="ques.description">

替换这部分:

    <div ng-if="{{ques.description}}">
        <i class="glyphicon glyphicon-question-sign" title="{{ques.description}}"></i>
    </div>

与 :

<span ng-if="ques.description">
    <i class="glyphicon glyphicon-question-sign" title="{{ques.description}}"></i>
</span>

Fiddle

第一件事记住 ng-if="expression" 永远不会使用插值指令 {{}} 它需要一个表达式,如果你检查长度就太好了。

为了更好地绑定 title 属性,请使用 ng-attr-title,它会在解析 {{ques.description}} 时创建 title 属性。

<div ng-if="ques.description.length > 0">
   <i class="glyphicon glyphicon-question-sign" ng-attr-title="{{ques.description}}"></i>
</div>

解决方法在我下面的评论里 post.

问题是我使用的是 angularJS 的 1.0.x 版本,它没有 ng-if 指令。

我下载了一个新的 angular.js,现在可以使用了!