当页面加载时,angularJS焦点在bootstrap模态中

时间:2015-01-27 21:06:48

标签: javascript jquery angularjs twitter-bootstrap

在我的应用程序中(是的,我知道这有点不好)在控制器中有这样的代码:

  $scope.changePasswordModal = function() {
    angular.element('#password-change').modal('show');
  };

此代码如此显示:

  if(angular.isDefined($routeParams.chgkey)){
    $scope.changePasswordModal();
  }

我有这样的观点:

<div class="modal custom" id="new-password-remember" tabindex="-1" role="dialog" aria-labelledby="newPasswordRemember" aria-hidden="true" modal-center modal-auto-focus modal-auto-focus-type="1" modal-auto-focus-action="rememberpwd" data-backdrop="static">
....

我在这个视图上也有一些其他的模态形式:当我点击打开模态时 - 一切正常:显示焦点。但是当我打开页面并通过动作在控制器中打开时,我看到它有焦点,但是为什么没有显示这个焦点?

指令:

.directive('modalAutoFocus', ['$timeout', '$window', function ($timeout, $window){
    return {
      restrict: 'EA',
      link: function(scope, element, attrs) {


        if (attrs.id == 'new-password-change'){
          element.find('.on-focus')[0].focus();
        }

        $(element).on('shown.bs.modal', function(){
          element.find('.on-focus')[0].focus();
        });
    }
  }
  }]);

我不明白什么是坏的...为什么没有显示焦点?我做错了什么?

谢谢

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题并且代码修复了它:

$timeout(function(){
    element.find('.on-focus')[0].focus();
}, 0);