角度 - 模态 - 服务集焦点不起作用

时间:2015-04-23 08:28:28

标签: angularjs modal-dialog

我正在使用角度模态服务,我正在尝试实现一些按键功能,以实现流畅的用户体验。

<button type="button" autofocus ng-click="close('Yes')" class="btn btn-primary" data-dismiss="modal">Yes</button>

问题是当模态弹出时,它没有焦点。焦点仍然在单击按钮以激活模态。

有没有办法在不重新加载页面的情况下重置自动对焦?或者有一些方法可以在模态激活时抓住焦点,但是每次 模态打开时都会这样做吗?

我尝试按照 this 帖子的回答中所述实现焦点服务,但我无法使用该模式。

这是一个演示行为的plunker: 的 Plunker

1 个答案:

答案 0 :(得分:0)

以下是工作演示: 的 Plunker

我最终找到了这个例子: Programmatically Setting Focus

它通过指向你想要获得焦点的任何元素来实现它:

app.directive('syncFocusWith', function($timeout, $rootScope) {
        return {
            restrict: 'A',
            scope: {
                focusValue: "=syncFocusWith"
            },
            link: function($scope, $element, attrs) {
                $scope.$watch("focusValue", function(currentValue, previousValue) {
                    if (currentValue === true && !previousValue) {
                        $element[0].focus();
                    } else if (currentValue === false && previousValue) {
                        $element[0].blur();
                    }
                })
            }
        }
    });

让它为我的模态工作很容易。我刚刚将这个小超时功能添加到模态控制器中,在尝试设置焦点之前给它半秒钟显示模态:

$timeout(function() {
  $scope.isFocused = true;
},500)

和我们想要获得焦点的元素上的这个属性:

 sync-focus-with="isFocused"