2013-08-30 15 views
5

attenzione semplice non funziona in angolarefunzione di messa a fuoco non funziona in angolare

<div class="search pull-right tab-{{ showDetails2 }}" data-ng-click="showDetails2 = !showDetails2; showDetails = false; showDetails1 = false;searchFocus();"> 

html

<input type="text" data-ng-model="model.fedSearchTerm" 
        placeholder="New Search" required class="span12 fedsearch-box" /> 

MY funzione

$scope.searchFocus = function() { 
      $('.fedsearch-box').focus(); 
     }; 
+0

http://stackoverflow.com/questions/14833326/how-to-set-focus-in-angularjs guarda la risposta di Mark qui. –

risposta

9

Ecco un'implementazione più robusto che funziona molto bene:

myApp.directive('focusMe', function() { 
    return { 
     link: function(scope, element, attrs) { 
      scope.$watch(attrs.focusMe, function(value) { 
       if(value === true) { 
        element[0].focus(); 
        element[0].select(); 
       } 
      }); 
     } 
    }; 
}); 


<input type="text" ng-model="stuff.name" focus-me="true" /> 
+1

Funziona molto bene. Potresti spiegare perché è necessario l'orologio $ per mettere a fuoco e selezionare? Ho provato a rimuovere $ watch e ovviamente non funziona senza di esso. –

1

Si potrebbe scrivere una direttiva per questo scopo, come ;

myApp.directive('focus', function() { 
    return function (scope, element, attrs) { 
      element.focus(); 
    } 
}); 

E nel codice HTML;

<input type="text" data-ng-model="model.fedSearchTerm" 
        placeholder="New Search" required focus /> 
9

ho incontrato lo stesso problema. Risolto risolvendo il comando focus all'interno di $ timeout. Assicurati di passare il parametro $ timeout nella funzione .controller.

$timeout(function() { $('.fedsearch-box').focus(); }); 
+0

funziona bene per me e risolvo il problema .. – Habeeb

+0

bello, funziona anche per me –

Problemi correlati