2015-04-23 57 views
0

我正在使用角度模式服務,我試圖實現一些平滑UX的按鍵功能。角度模式服務設置焦點不工作

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

問題是,當模式彈出時,它沒有焦點。焦點保持在點擊的按鈕上以激活模式。

有沒有辦法重新設置自動對焦而不重新加載頁面?或者有什麼方法可以在模態激活時抓住焦點,但是這樣做每次都會模態打開?

我試着實現焦點服務,如this後的回答中所述,但我無法讓它與模式一起工作。

下面是一個說明行爲的plunker: Plunker

回答

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"