如果value = 0,AngularJs中的过滤器是否有效?

时间:2015-11-26 10:42:35

标签: angularjs angularjs-filter

我有limit

当我尝试todo时$scope.event.privacy = 0;过滤器没有做任何思考......但是如果{{ event.privacy | eventPrivacyFilter }}它可以正常工作。

$scope.event.privacy = 1 or 2 or .....中的过滤器是否有效{?1}}?

过滤器:

AngularJs

REGIST:

value = 0

2 个答案:

答案 0 :(得分:2)

if (!privacyId) {return null;}是在$scope.event.privacy = 0时返回null的语句,因为if(!0)的计算结果为true。

因此,在这种情况下不执行EventPrivacyRegistry.getById(privacyId).name;

解决方案是与nullundefined进行比较,如下所示:

if(privacyId === null || privacyId === undefined) {
    return;
}

答案 1 :(得分:1)

它与AngularJs无关。这是javascript falsy value

在您的示例中,零(0)被评估为伪值。 如果想要严格比较那么你需要明确地要求它。

所以改变你的代码

// old code
{{ event.privacy | eventPrivacyFilter }}

// new code
{{ event.privacy != null | eventPrivacyFilter }}

在此处了解有关比较假值和真值的更多信息http://www.sitepoint.com/javascript-truthy-falsy/