2013-07-08 13 views
10

Czy istnieje jakiś sposób, aby ustawić ostrość w kontroli wejściowych za pomocą angularjs/Angular-UI?angularjs/UI - fokus w oknach

Widziałem, że kątowa-UI ma pewne JQ-Ui = dyrektywę ostrości, ale jestem w stanie zmusić go do pracy.

Mam kilka okien dialogowych, że wyświetlenia przy użyciu usługi $ dialogowe kątowa-UI i naprawdę chciałby pierwszego wejścia na każdym oknie, aby skupić się raz to pokazano

+0

Czy możesz podać jsfiddle? – pasine

+0

Brakuje ui-refresh – ProLoser

Odpowiedz

-5

Ostatnia wersja AngularJS oferuje ng-focus: http://docs.angularjs.org/api/ng/directive/ngFocus

+0

nie działa dla mnie, wartość przekazana do funkcji watch dyrektywy to tylko ciąg znaków, np. "focusInput" nie jest ocenianą wartością focusInput .. coś musi być nie tak? –

+0

Nie działa również dla mnie. Brak błędów, po prostu nic się nie dzieje. – Ade

+4

To jest połączenie zwrotne, gdy pole jest skupione. – jurchiks

0

masz rację, ja pokazano demo w jaki sposób można wywołać metodę natywną jQuery.fn.focus() jQuery za pomocą elementu DOM, jak to wszystko ui-jq naprawdę robi. Sztuczka polega na tym, by strzelać wielokrotnie i we właściwym czasie.

ui-jq już wykonuje metodę dla ciebie wewnątrz $timeout, jednak domyślnie uruchamia się tylko raz, gdy tworzony jest element DOM. W celu dokonania ui-jq ogień wielokrotnie, wystarczy dodać ui-refresh="someExpression" i użyć wyrażenia znasz zmieni się za każdym razem modalna otwiera. Jest w porządku, jeśli odświeża się po zamknięciu modala, .focus() nic nie da, jeśli element DOM nie jest widoczny.

Tak więc, dla modulacji ui-bootstrap, po prostu wpisz to samo wyrażenie, które używasz wewnątrz modal="someExpression" i powinieneś być ustawiony.

10

Okazuje się, że wszystko, co potrzebne jest to, jeśli używasz go razem z usługą $ dialogowym kątowa-ui:

app.directive('focusMe', function ($timeout) {  
    return {  
     link: function (scope, element, attrs, model) {     
      $timeout(function() { 
       element[0].focus(); 
      }); 
     } 
    }; 
}); 

html:

<input type="text" focus-me > 

jak stwierdził, jest to dla Angular- Tylko usługa dialogowa UI $.

Zobacz żyć tutaj: http://strengthtracker.apphb.com (kliknij Zaloguj się lub zarejestruj aby otworzyć okien dialogowych)

+0

Jak ustawić fokus na przyciskach stopki .. Naprawdę nie jestem w stanie tego zrobić ... Muszę zamknąć $ dialog.messageBox, jeśli zostanie naciśnięty klawisz Enter – TalentTuner

+0

dodaj znacznik

wokół przycisku sterowania + w oknie dialogowym –

+0

Ten link wydaje się być martwy. – Katerberg

18

użyłem standardowego atrybutu autofocus w moim szablonu, a ogłoszony prosty dyrektywy, aby pracować dla elementów, które są tworzone po ładowanie strony (jak okna dialogowe w twoim przypadku).

+2

Piękne rozwiązanie, dostosuję to w moim kodzie! – Mirage

+1

Uzgodnione. Ładne proste rozwiązanie, które działa dobrze.Po prostu dodałem go do wyskakującego okienka NgDialog i działało idealnie. Dzięki! – user2233949

+1

Noob tutaj, przepraszam: Co robi 'ograniczyć: 'A'' zrobić? –