2014-09-22 2 views
-1

У меня есть этот ng-repeatфильтр пустые значения при перечислении свойств объекта

<alert ng-repeat="(name, msg) in warnings">{{ msg }}</alert> 

, который перечисляет этот объект

$scope.warnings = { 
    a: null, 
    b: 'some warning', 
    c: null 
} 

Как бы фильтровать предупреждения, которые имеют nullvalue или пустые?

+1

Поскольку у вас есть словарь я не думаю, что вы можете использовать Filer, вам нужно будет использовать нг-если '< alert ng-repeat = "(name, msg) в предупреждениях" ng-if = "msg"> {{msg}} 'Измените его на массив, и вы должны хорошо использовать фильтр. – PSL

+0

@PSL это работает, но решение naomiks чище в imho, спасибо тем не менее –

+0

ну, я не ответил ... :) Кстати, это решение менее эффективно, вы можете просто использовать угловое. Для каждого непосредственно на объект «угловой». forEach ($ scope.warnings, function (v, k) {if (! v) delete $ scope.warnings [k];}) '. И если вы «каждый из них», вы можете преобразовать его в массив, который работает лучше всего с ng-repeat, даже с порядком, которым вы можете управлять с помощью массива – PSL

ответ

2

Там может быть более эффективным инструментом для этого в угловом Lib, но вы можете сделать это

Object.keys($scope.warnings).forEach(function(key) { 
if (!$scope.warnings[key]) delete $scope.warnings[key] 
}); 
+0

. Спасибо, гораздо чище иметь только предупреждения, которые существуют на объекте, и удалить все остальное. –