使用帶有此屬性的ui-bootstrap附加到對話框上的ok/save按鈕。 第一次創建對話框時,它會按照預期的方式專注於按鈕。 每隔一段時間它都不起作用。爲什麼這隻在第一次顯示對話框時才起作用?
.directive('autoFocus', function($timeout) {
return {
restrict: 'AC',
link: function(_scope, _element) {
$timeout(function(){
_element[0].focus();
}, 0);
}
};
});
模態模板看起來是這樣的(這是來自邁克爾·康羅伊的角對話框的服務):
<div class="modal" ng-enter="" id="errorModal" role="dialog" aria-Labelledby="errorModalLabel">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header dialog-header-error">
<button type="button" class="close" ng-click="close()">×
</button>
<h4 class="modal-title text-danger"><span class="glyphicon glyphicon-warning-sign"></span> Error</h4>
</div>
<div class="modal-body text-danger" ng-bind-html="msg"></div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" autoFocus ng-click="close()">Close</button>
</div>
</div>
</div>
</div>
首次將重點轉移到關閉按鈕沒有問題。之後,焦點停留在原來的位置。
我試圖處理一個重複啓動這個錯誤對話框的回車鍵按鈕,我真的需要把焦點從對話框的下面移開。
啊,對,可能與http://www.w3schools.com/tags/att_input_autofocus.asp發生衝突 – maurycy
來自[docs](https://docs.angularjs.org/guide/directive): '最佳實踐:爲了避免與未來標準的衝突,最好在自己的指令名稱前加上前綴。例如,如果您創建了指令,那麼如果HTML7引入了相同的元素,則會出現問題。兩個或三個字母的前綴(例如btfCarousel)運作良好。同樣,不要用ng加前綴自己的指令,否則它們可能會與未來版本的Angular中包含的指令衝突。 ' –
przno