如果value=0,AngularJs中的过滤器是否工作?

如果value=0,AngularJs中的过滤器是否工作?,angularjs,angularjs-filter,Angularjs,Angularjs Filter,我有$scope.event.privacy=0 当我尝试执行{{event.privacy | eventPrivacyFilter}}时,filter不会做任何思考。。。但是如果$scope.event.privacy=1或2或….,这就是工作 如果value=0,则AngularJs中的过滤器是否工作 过滤器: (function() { 'use strict'; angular.module('eventMod').filter('eventPrivacyFilt

我有
$scope.event.privacy=0

当我尝试执行
{{event.privacy | eventPrivacyFilter}}
时,filter不会做任何思考。。。但是如果
$scope.event.privacy=1或2或….
,这就是工作

如果
value=0
,则
AngularJs
中的过滤器是否工作

过滤器:

 (function() {
    'use strict';


    angular.module('eventMod').filter('eventPrivacyFilter', eventPrivacyFilter);


    function eventPrivacyFilter(EventPrivacyRegistry) {
        return function(privacyId) {
            if (!privacyId) {return null;}
            return EventPrivacyRegistry.getById(privacyId).name;
        };
    }
})();
注册:

    (function() {
    'use strict';

    angular.module('eventMod').service('EventPrivacyRegistry', EventPrivacyRegistry);

    function EventPrivacyRegistry(_) {

        return {

            getList: function () {
                return [
                    { id: 0, name: '1'},
                    { id: 1, name: '2'},
                    { id: 2, name: '3'},
                    { id: 3, name: '4'}
                ];
            },

            getById: function (privacyId) {
                console.log(privacyId);
                console.log(_.find(this.getList(), {id: privacyId }));
                return _.find(this.getList(), {id: privacyId });
            }
        };

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

因此,
EventPrivacyRegistry.getById(privacyId).name

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

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

因此,
EventPrivacyRegistry.getById(privacyId).name

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

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

这与AngularJs无关。这是javascript
falsy值

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

所以像这样更改代码

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

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

在这里阅读更多有关比较falsy和truthy值的信息

这与AngularJs无关。这是javascript
falsy值

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

所以像这样更改代码

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

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

在此处阅读有关比较falsy和truthy值的更多信息

显示筛选代码。请在此处输入更多代码。“我们什么也看不到。@TarunDugar查看更新的问题。显示筛选代码。请在此处添加更多代码。”。“我们什么也看不到。”塔伦杜加看最新的问题。