2013-08-30 32 views
5

tập trung đơn giản không được làm việc trong gócchức năng Focus không hoạt động trong góc

<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" /> 

chức năng MY

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

http://stackoverflow.com/questions/14833326/how-to-set-focus-in-angularjs xem câu trả lời của Mark tại đây. –

Trả lời

9

Đây là một thực hiện mạnh mẽ hơn hoạt động rất tốt:

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

Tính năng này hoạt động rất tốt. Bạn có thể giải thích tại sao cần phải có đồng hồ $ để bọc lấy nét và chọn không? Tôi đã thử gỡ bỏ $ đồng hồ và tất nhiên nó không hoạt động mà không có nó. –

1

Bạn có thể viết một chỉ thị cho mục đích này như ;

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

Và trong HTML của bạn;

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

tôi gặp phải vấn đề tương tự. Giải quyết nó bằng cách kèm theo lệnh focus bên trong $ timeout. Đảm bảo bạn chuyển tham số $ timeout trong hàm .controller.

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

hoạt động tốt cho tôi và giải quyết vấn đề .. – Habeeb

+0

tốt, cũng phù hợp với tôi –

Các vấn đề liên quan