使用ng-repeat时只过滤一个或多个元素
Filter only one or more elements while using ng-repeat
我希望只打印将使用ng-repeat打印的数组中的部分元素,而不是所有元素。
数组存储在$scope.userRecipes = []
中。
在HTML中我使用:
<li ng-repeat="f in userRecipes" class="list-group-item">
...
<div class="row panel-body" ng-show="!f.isCollapsed">
<hr>
<div class="col-md-6">
<h3>{{f.trigger.triggerType | capitalize}} trigger</h3>
<div ng-repeat="(key, data) in f.trigger" ng-if="!(key == 'triggerType')
|| !(key == 'lastCheck')
|| !(key == 'sender')
|| !(key == 'gaid')
|| !(key == 'ctid')
">
<h4>{{key | reformat | capitalize}}:</h4> {{data}}
</div>
</div>
<div class="col-md-6">
<h3>{{f.action.actionType | capitalize}} action</h3>
<div ng-repeat="(key, data) in f.action" ng-if="key.toString().localeCompare('actionType') || data.notNull() || !data">
<h4>{{key | reformat | capitalize}}:</h4> {{data}}
</div>
</div>
</div>
...
</li>
但是这个解决方案(ng-if="!(key == 'triggerType') || !(key == 'lastCheck') || ..."
)不适合我。它只工作,如果我设置一个条件:ng-if="!(key == 'triggerType')"
工作,如果单独离开。如果我使用ng-if="!(key == 'triggerType') || !(key == 'lastCheck')
,它不工作。
注意reformat
和capitalize
是两个AngularJS的myApp.filters(...)
。
总结:目标是确保ng-repeat
忽略那些具有特定键或数据的元素(不打印空HTML行)。
您的ng-if
中的逻辑是有缺陷的。如果任何一个条件为真,你都会返回真,所以每次迭代都会得到真。您需要的是逻辑操作符and
,而不是or
。
<div ng-repeat="(key, data) in f.trigger" ng-if="!(key == 'triggerType')
&& !(key == 'lastCheck')
&& !(key == 'sender')
&& !(key == 'gaid')
&& !(key == 'ctid')
">
现在,如果它们都为真,你将返回真,这是你真正想要的。
HTML:
<div ng-repeat="(key, data) in filteredTriggers(f.trigger)">
<h4>{{key | reformat | capitalize}}:</h4> {{data}}
</div>
控制器:
$scope.filteredTriggers = function(triggers) {
var result = {};
angular.forEach(triggers, function(value, key) {
if (['triggerType', 'lastCheck', 'sender', 'gaid', 'ctid'].indexOf(key) == -1) {
result[key] = value;
}
});
return result;
}
相关文章:
- 使用clickToggle并在单击另一个元素时关闭元素
- 表追加而不附加最后一个元素
- 滚动到容器中的下一个元素-几乎到了
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- 按我自己的类克隆另一个元素的内容和顺序
- Javascript获取上一个元素的内容
- 如何通过HTML+CSS中的另一个元素Selector更改元素的属性值
- 在数组中的一个元素上设置多个值
- 无法选择除一个元素外的所有元素
- 使用jquery contains获取一个元素并添加类
- $(.class).empty总是缺少一个元素
- jQuery-将列表项的一个元素移动到同一项的另一个元素中+对我的列表中的每个项执行此操作
- 如何在一个元素动画之后延迟
- jQuery转盘下一个元素没有滑入
- jquery从另一个元素中移除移除
- DIV怎么能像Javascript中的另一个元素一样工作呢
- 当知道同一hiearch中至少有一个元素时,遍历到元素.结构使用jquery
- 使用数据属性将HTML数据复制到另一个元素
- 如何选择给定类的上一个元素
- 动态修改一个元素,使其与给定的选择器匹配