如何在ng-repeat中设置范围变量?

时间:2015-08-11 09:35:16

标签: javascript angularjs angularjs-ng-repeat ng-init

我想确定是否渲染了任何重复的ng元素。

我写这段代码

<div ng-show="anyRendered">Any has been rendered</div>

 <div ng-show="anyFilterActive">ANY FILTER IS ACTIVE</div>

 <div class="selected-filter-value" ng-if="filter.name && filterCtrl.isActiveFilter(filter)" data-ng-repeat="(name, filter) in filterOptions">
    <span ng-init="anyFilterActive = true;">{{filter.name}}:</span>

</div>

但是这段代码不起作用。我也尝试在ng-repeat中编写$ parent.anyRendered。

3 个答案:

答案 0 :(得分:1)

尝试使用ng-if

<div ng-show="filterOptions.length > 0">Any has been rendered</div>

<div ng-if="filterOptions.length > 0" ng-repeat="(name, filter) in filterOptions">
<span></span>
</div>

答案 1 :(得分:0)

您不能在模板中编写代码逻辑:所有代码必须在您的控制器,过滤器,指令和服务中。 ng-init指令仅在此处,以便您可以创建别名以使模板更简单。

过滤器和指令包含“演示代码”,控制器和服务包含“业务相关代码”。

您可以创建一个过滤器来了解对象是否为空(filter code from another question),并将其与ng-if,ng-show ...

一起使用

结果模板:

<div ng-if="filterOptions|empty">
     Nothing to show! 
</div>
<div ng-repeat="(k, v) in filterOptions">
     {{k}}, {{v}}
</div>

答案 2 :(得分:0)

只需使用$index

<div ng-repeat="(name, filter) in filterOptions">

<span ng-show="$index > 0"></span>

</div>

ngRepeat Docs $index

在ng-repeat文档的示例中,您可以看到$ index

的用法