2015-04-29 33 views
10

Açısal rota kullanıyorum. Her sayfa (rota) bir giriş alanına sahiptir. İlk sayfada özniteliği özniteliğini başarıyla kullandım. Diğer sayfalara gittiğimde, giriş otomatik netleme yapmıyor. İlk sayfaya geri dönmek girişi tekrar otomatik olarak odaklamıyor. Şimdi neden işe yaramadığını anlıyorum ama bunu başarmanın bir yolu olup olmadığını bilmek istiyorum.Açısal Rotalar/giriş otomatik odaklama

Ben Açısal yeniyim ve ben ngFocus hakkında okuyun anlamak emin değilim:

https://docs.angularjs.org/api/ng/directive/ngFocus

cevap

9

ngFocus aradığınız şey değildir. Bu yönerge daha çok bir olay tetikleyicisidir. Kullanıcı, metin kutusuna odaklandığında her zaman kodunuzu yürütür. Ne istiyorsun bu özel direktifi gibi bir şey

geçerli:

angular 
    .module('myApp') 
    .directive('autofocus', function($timeout) { 
     return { 
      link: function(scope, element, attrs) { 
       $timeout(function() { 
        element.focus(); 
       }); 
      } 
     } 
    }); 

Benim durumumda http://ericclemmons.com/angular/angular-autofocus-directive/

+3

setTimeout yerine $ timeout daha fazla anlam ifade eder –

+3

Agree. Ayrıca burada kullanılan $ dokumanı görmüyorum, bu yüzden enjekte edilmesine gerek yok. –

1

esinlenerek, Travis Collins cevabı nasılsa çünkü eleman girişlerinin bir dizi oldu işe yaramadı .

Bu yüzden biraz değiştirilmiş sürümü kullanmalıyım. Not, ok işlevleriyle.

.directive('autofocus', ($timeout) => ({ 
    link: (scope, element: any, attrs) => { 
     if (!element.focus && element.length) { 
      element = element[0]; 
     } 
     $timeout(() => { 
      element.focus(); 
     }); 
    } 
}));