【问题标题】:Best way to check if all property values in object are = ""检查对象中所有属性值是否为 = "" 的最佳方法
【发布时间】:2015-11-30 22:00:33
【问题描述】:

我正在尝试检查对象的属性是否没有值(例如所有属性的 obj.prop1=='')。

在角度表达式中实现这一目标的最佳方法是什么?顺便说一句,角度表达式是放置这个的最佳位置吗?

<i class="fa fa-filter" ng-class="{'white-icon':checkobjectpropertieshere)}"></i> 

谢谢

【问题讨论】:

标签: javascript angularjs


【解决方案1】:

你必须循环检查,没有默认方法:

function isEmptyObj(obj) {
    for(var prop in obj) {
        if (obj[prop] != "") return false; //or some other checking 
    }

    return true;
}

【讨论】:

  • 尝试这个,但似乎没有使用 ng-class 触发
  • @darkace -- 你把它变成了$scope的函数了吗?
  • 我刚刚将该功能添加到我的控制器中。虽然我刚刚意识到我可能应该在 ng-click 中调用它,并将结果存储为 ng-class 的 var。你对 $scope 有什么建议?
  • 如果你想从视图中调用它 - 它必须定义为:$scope.isEmptyObj = function(obj)@darkace
  • 因为它在视图中,所以它会在摘要循环运行时运行。如果您知道何时需要运行,请将结果分配给一个变量并在 ngClass 表达式中使用它。
【解决方案2】:

检查对象是否包含 any 虚假值。要检查值是否为空字符串,请使用return obj[e] === '';

使用Array#some

var containsFalsy = Object.keys(obj).some(function (e) {
    return !obj[e];
});

检查对象是否包含所有虚假值。

使用Array#every

var containsFalsy = Object.keys(obj).every(function (e) {
    return !obj[e];
});

【讨论】:

    猜你喜欢
    • 2018-08-17
    • 2018-03-07
    • 2015-08-23
    • 1970-01-01
    • 2017-12-11
    • 1970-01-01
    • 2011-08-10
    • 2020-12-27
    • 2011-05-24
    相关资源
    最近更新 更多