AngularJS向ng-repeat模型添加行 - 如何关注新添加的第1行输入?

时间:2015-04-17 10:01:52

标签: angularjs ng-repeat autofocus

我正在尝试将自动对焦添加到ng-repeat

中的第一个元素
<div class="border-row" {{$first?focus-autofocus:''}} ng-repeat="item in itemsList" >

但这不起作用。我正在使用https://github.com/obogo/angular-focusmanager。我该怎么办呢?

3 个答案:

答案 0 :(得分:0)

如果你的itemList中有一个列表,那么

<div class="border-row" ng-repeat="item in itemsList" >

<input ng-model="item.id" type="text" custom-autofocus="$index == 0" >

为此创建一个指令:

    .directive('customAutofocus', function() {
  return{
         restrict: 'A',

         link: function(scope, element, attrs){
           scope.$watch(function(){
             return scope.$eval(attrs.customAutofocus);
             },function (newValue){
               if (newValue == true){
                   element[0].focus();
               }
           });
         }
     };
})
;

答案 1 :(得分:0)

你必须使用$ index属性。$ index对于第一个元素是0。 其中一个解决方案可能是:

<div class="border-row" ng-repeat="item in itemsList" >
<div ng-if="$index==0" focus-autofocus>
</div></div>

答案 2 :(得分:0)

插值在标签内的任何位置都不起作用。它必须是属性的值。

我不知道那个图书馆,但不应该这样做吗?

<div class="border-row" focus-autofocus ng-repeat="item in itemsList" >

或者:

<div class="border-row" focus-autofocus ng-repeat="item in itemsList track by $index" >