我正在使用角度模态服务,我正在尝试实现一些按键功能,以实现流畅的用户体验。
<button type="button" autofocus ng-click="close('Yes')" class="btn btn-primary" data-dismiss="modal">Yes</button>
问题是当模态弹出时,它没有焦点。焦点仍然在单击按钮以激活模态。
有没有办法在不重新加载页面的情况下重置自动对焦?或者有一些方法可以在模态激活时抓住焦点,但是每次 模态打开时都会这样做吗?
我尝试按照 this 帖子的回答中所述实现焦点服务,但我无法使用该模式。
这是一个演示行为的plunker: 的 Plunker
答案 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"