2015-03-12 3 views
0

Я Тринг создать директиву фокусировки, когда я открыть страницу с внутри формы в первом тексте входного filed.This является ДирективаПолучить фокус на входе angularjs не работает

app.directive("getFocus", function() { 
    return { 
     restrict: 'AC', 
     link: function(scope, element){ 
      console.log("focus!"); 
      element.focus(); 
     } 
    } 
}); 

и в моем HTML вход

<input id="ss" data-ng-model="item.value" type="text" data-ng-class="{'get-focus': $first}"> 
<input id="tt" type="text" data-ng-model="item.value" data-ng-class="{'get-focus': $first}"> 

я использую ng-class, потому что это динамичная форма создания велосипедной в JSON и я не знаю, какой вход создан для первого. Директива, похоже, не работает. Infact, console.log не появляется в консоли .. Что-то не так?

+0

директивы класса не будет работать с 'нг-class'. они могут использоваться только с атрибутом класса html. –

+0

, даже если я использую ограничение: «AC»? –

+0

Да. В приведенном выше случае директива 'getFocus' будет добавлена ​​на основе условия. Нам нужно повторно скомпилировать узел после добавления класса для его работы. –

ответ

1

У меня была проблема, как, что и я в конечном итоге с этой директивой

angular.module('myApp').directive('autofocusIf', function($timeout) { 
return { 
    restrict: 'A', 
    scope: { 
    autofocusIf: '&' 
    }, 
    link: function($scope, $element) { 
    $scope.$watch('autofocusIf', function(shouldFocus) { 
     if (shouldFocus()) { 
     $timeout(function() { 
      $element[0].focus(); 
     }); 
     } else { 
     $timeout(function() { 
      $element[0].blur(); 
     }); 
     } 
    }); 
    } 
}; 
}) 

, а затем в HTML

<div ng-repeat="repeat in repeats"> 
    <input type="text" autofocus-if="$first" ng-model="myModel" /> 
</div> 
+0

все еще не работает :( –

+0

Вы делаете свой ввод внутри 'ng-repeat', можете ли вы сделать плункер? – maurycy

+0

Хорошо, я собираюсь .. Это проблема, если я использую uikit? –

Смежные вопросы