This question already has answers here:
AngularJS - How to structure a custom filter with ng-repeat to return items conditionally
(3个答案)
5年前关闭。
我有多个相互依赖的ng-repeats。
我填写硬编码的niveau A-G。在目标列表中,我将niveaus的名称与JSON中的名称进行匹配。
并执行ng-repeat:
因此,它检查每个niveau的目标。如果目标与名称匹配,它将显示。
但是现在的问题是,如果ng-if中存在匹配项,那么还会显示li.foobar。
因此可以是输出:
但是它应该具有唯一的niveau名称。每行A-G。并显示在重复部分中是否有li.yes,它应该从重复列表中隐藏li.foobar。
但是如何在Angular中实现呢?
(3个答案)
5年前关闭。
我有多个相互依赖的ng-repeats。
$scope.niveaus = [
{ niveau: 'a' },
{ niveau: 'b' },
{ niveau: 'c' },
{ niveau: 'd' },
{ niveau: 'e' },
{ niveau: 'f' },
{ niveau: 'g' }
];
$http.get('/goals.json').success(function(goals) {
$scope.goals = goals;
});
我填写硬编码的niveau A-G。在目标列表中,我将niveaus的名称与JSON中的名称进行匹配。
并执行ng-repeat:
<ul ng-repeat="niveau in niveaus">
<li class="foobar">{{ niveau.niveau }}</li>
<div ng-repeat="goal in goals | unique:'niveau_id'">
<div ng-if="goal.niveau.name == niveau.niveau">
<li class="yes">{{ goal.niveau.name }}</li>
</div>
</div>
</ul>
因此,它检查每个niveau的目标。如果目标与名称匹配,它将显示。
但是现在的问题是,如果ng-if中存在匹配项,那么还会显示li.foobar。
因此可以是输出:
但是它应该具有唯一的niveau名称。每行A-G。并显示在重复部分中是否有li.yes,它应该从重复列表中隐藏li.foobar。
但是如何在Angular中实现呢?
最佳答案
检查filters上的文档
angular.module('myApp', []).filter('withgoals', function() {
return function(input, goals) {
var out = []
for (var i = 0; i < goals.length; i++) {
if (input.niveau == goals[i].niveau.name) out.push(input[i])
}
return out;
});
<div ng-repeat='n in niveaus| withgoals: goals'></div>
09-25 18:42