2013-08-30 7 views
5

シンプルな焦点で作業されていないが、角度フォーカス機能は、角

<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機能で作業されていない

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

http://stackoverflow.com/questions/14833326/how-to-set-focus-in-angularjsここでマークの答えを見てください。 –

答えて

9

は非常にうまく機能し、より堅牢な実装である:

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

これは非常にうまくいきます。 $ watchがフォーカスをラップして選択する必要がある理由を説明できますか?私は$ watchを取り除こうとしましたが、もちろんそれがなければ動作しません。 –

1

あなたのようなこの目的のためにディレクティブを書くことができ;

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

あなたのHTMLでは;ここで

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

私は同じ問題に遭遇しました。 $ timeoutの中にフォーカスコマンドを入れて解決しました。 .controller関数で$ timeoutパラメータを渡すことを確認してください。

+0

は私のためにうまく動作し、問題を解決します.. – Habeeb

+0

良い、私のためにも動作します –

関連する問題