我有limit
当我尝试todo时$scope.event.privacy = 0;
过滤器没有做任何思考......但是如果{{ event.privacy | eventPrivacyFilter }}
它可以正常工作。
$scope.event.privacy = 1 or 2 or .....
中的过滤器是否有效{?1}}?
过滤器:
AngularJs
REGIST:
value = 0
答案 0 :(得分:2)
if (!privacyId) {return null;}
是在$scope.event.privacy = 0
时返回null的语句,因为if(!0)
的计算结果为true。
因此,在这种情况下不执行EventPrivacyRegistry.getById(privacyId).name;
。
解决方案是与null
和undefined
进行比较,如下所示:
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/