Получить фокус на вводе 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, и я не знаю, какой ввод создается первым. Директива кажется не работает. Фактически, console.log не отображается в консоли. Что-то не так?


person Atlas91    schedule 12.03.2015    source источник
comment
директивы класса не будут работать с ng-class. их можно использовать только с атрибутом класса html.   -  person Vinay K    schedule 12.03.2015
comment
даже если я использую ограничение: «AC»?   -  person Atlas91    schedule 12.03.2015
comment
Да. В приведенном выше случае директива getFocus будет добавлена ​​на основе условия. Нам нужно перекомпилировать узел после добавления класса, чтобы он заработал.   -  person Vinay K    schedule 12.03.2015


Ответы (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();
        });
      }
    });
  }
};
})

а потом в хтмл

<div ng-repeat="repeat in repeats">
  <input type="text" autofocus-if="$first" ng-model="myModel" />
</div>
person maurycy    schedule 12.03.2015
comment
У вас есть свой вклад внутри ng-repeat, можете ли вы сделать плункер? - person maurycy; 12.03.2015
comment
Хорошо, я собираюсь... Это проблема, если я использую uikit? - person Atlas91; 12.03.2015
comment
Я так не думаю, хотя я сделал для вас работающий плункер plnkr.co/edit /ohJ62hl0rtNb1NNus9F6?p=предварительная версия - person maurycy; 12.03.2015
comment
я думаю, что нашел проблему.. или, может быть, нет.. вы установили ng-модель в качестве входных данных.. в моем случае у меня есть другая ng-модель.. см. мое редактирование - person Atlas91; 12.03.2015
comment
примерно так: plnkr.co/edit/c0fyixdoAOmnYVilnFrO?p=preview и здесь не работает - person Atlas91; 12.03.2015
comment
Этот плункер работает для меня, я не думаю, что здесь проблема с ng-моделью - person maurycy; 12.03.2015
comment
ну.. странно :( - person Atlas91; 12.03.2015