检查所有值是返回true还是false

时间:2016-07-08 11:07:37

标签: javascript jquery css angularjs contextmenu

我有一个功能:

var registerEnabledEvents = function ($scope, enabled, item, $ul, $li, nestedMenu, model, text, event, $, level) {
        /// <summary>If item is enabled, register various mouse events.</summary>
        if (enabled) {
            var openNestedMenu = function ($event) {
                removeContextMenus(level + 1);
                var ev = {
                    pageX: event.pageX + $ul[0].offsetWidth - 1,
                    pageY: $ul[0].offsetTop + $li[0].offsetTop - 3
                };
                renderContextMenu($scope, ev, nestedMenu, model, level + 1);
            };

            $li.on('click', function ($event) {
                $event.preventDefault();
                $scope.$apply(function () {
                    if (nestedMenu) {
                        openNestedMenu($event);
                    } else {
                        $(event.currentTarget).removeClass('context');
                        removeContextMenus();

                        if (angular.isFunction(item[1])) {
                            item[1].call($scope, $scope, event, model, text)
                        } else {
                            item.click.call($scope, $scope, event, model, text);
                        }
                    }
                });
            });

            $li.on('mouseover', function ($event) {
                $scope.$apply(function () {
                    if (nestedMenu) {
                        openNestedMenu($event);
                    }
                });
            });
        } else {
            $li.on('click', function ($event) {
                $event.preventDefault();
            });
            $li.addClass('display-none');
        }

    };

此函数取自此角度指令https://github.com/Templarian/ui.bootstrap.contextMenu 有一个上下文菜单。实际上,没有任何方法可以通过参数或条件隐藏菜单的列表项,因此我修改了指令。我改变了:

$li.addClass('disabled');

$li.addClass('display-none');

有效。如果某个商品返回false,则不会显示该商品。问题是什么?那么&#34;启用&#34;如果上下文菜单的项目可见,则返回参数。如果你写下console.log()并显示它将获得的值(例如你有2个项目):

2016-07-08 12:54:36.851 contextMenu.js:141 false 
2016-07-08 12:54:36.854 contextMenu.js:141 false

2016-07-08 12:54:36.851 contextMenu.js:141 true 
2016-07-08 12:54:36.854 contextMenu.js:141 false

它当然取决于控制器中的条件。问题是如果所有项目都返回false,则它显示的上下文菜单没有项目,但它只显示一个&#34;白色空矩形&#34;。我需要的应该是,如果所有项目都返回false,我将类display-none添加到整个ul中,如下所示:

$ul.addClass('display-none');

但是如果至少有一个是真的,我只将css类添加到$ li项目中,只隐藏一个返回false。我该怎么做?谢谢

编辑:

这是我试过的

$scope.arrayValue = [];
        $scope.arrayValue.push(enabled);

        if($scope.arrayValue.every(enabled)) {
            console.log("All true");
        } else {
            console.log("Not all true");
        }

但我得到:false不是函数

0 个答案:

没有答案