【问题标题】:filter empty values when enumerating object properties枚举对象属性时过滤空值
【发布时间】:2014-09-22 16:51:50
【问题描述】:

我有这个ng-repeat

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

枚举一个this对象

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

如何过滤具有 null 值或为空的警告?

【问题讨论】:

  • 既然你有字典,我不认为你可以使用过滤器,你需要使用 ng-if &lt;alert ng-repeat="(name, msg) in warnings" ng-if="msg"&gt;{{ msg }}&lt;/alert&gt;将它更改为数组,你应该很好地使用过滤器。
  • @PSL 这行得通,但 naomiks 解决方案在 imho 中更干净,谢谢你
  • 哦,我没有回答... :) 顺便说一句,解决方案效率较低,您可以直接在对象 angular.forEach($scope.warnings , function(v, k){ if(!v) delete $scope.warnings[k]; }) 上使用 angular.forEach。如果你是 eaching 它,你可以将它转换为一个最适合 ng-repeat 的数组,甚至是你可以用数组管理的排序
  • 我现在只有warings = {b: 'some warning' } 并使用delete 摆脱它们

标签: angularjs filter ng-repeat


【解决方案1】:

在 Angular 库中可能有更好的工具,但你可以这样做

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

【讨论】:

  • 谢谢,只保留对象上存在的警告并删除所有其他内容会更简洁。
猜你喜欢
  • 1970-01-01
  • 2017-03-05
  • 1970-01-01
  • 2012-06-22
  • 2019-09-13
  • 2013-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多