angularjs ng-blur在Chrome或Firefox中无效

时间:2014-11-21 12:02:40

标签: javascript angularjs angular-ui-bootstrap

我正在使用ui.bootstrap collapse指令来显示下拉菜单。 我想在用户点击div之外时自动折叠它。

当用户点击过滤按钮时,我使用以下方式设置焦点:

.directive('setFocus', function () {
         return {
            restrict: 'A',
            scope: {
                focusValue: "=setFocus"
            },
            link: function ($scope, $element, attrs) {
                $scope.$watch("focusValue", function (currentValue, previousValue) {
                    if (currentValue === true && !previousValue) {
                        $element[0].focus();
                        console.log('set focus  from setFocus directive');
                    } else if (currentValue === false && previousValue) {
                        $element[0].blur();
                        console.log('blurr from setFocus directive');
                    }
                })
        }
        }
});

HTML

<div collapse="isDropDownCollapsed" class='div2' align-element-right='el1' set-focus='!isDropDownCollapsed' ng-blur="toggleMenu()">

控制器

app.controller('testCtrl', function ($scope) {
$scope.isDropDownCollapsed = true;
$scope.toggleMenu = function () {
    $scope.isDropDownCollapsed = !$scope.isDropDownCollapsed;
}

});

它适用于IE v11,但选中复选框后焦点也会丢失。 它在Chrome v38或Firefox v33.1中不起作用。

example code