Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angularjs指令elem.id=$index不是它的实际索引_Javascript_Angularjs - Fatal编程技术网

Javascript Angularjs指令elem.id=$index不是它的实际索引

Javascript Angularjs指令elem.id=$index不是它的实际索引,javascript,angularjs,Javascript,Angularjs,我正在创建一个angularjs指令,以便在元素的id与特定数字匹配时,将特定输入集中在列表中 我的html <ul> <li ng-repeat="line in lines"> {{$index}} <input focus-it="" id="{{$index}}" tabIndex="{{$index}}" type="text" ng-model="line.data" ng-keypress="keyPre

我正在创建一个angularjs指令,以便在元素的id与特定数字匹配时,将特定输入集中在列表中

我的html

    <ul>
        <li ng-repeat="line in lines">
            {{$index}} <input focus-it="" id="{{$index}}" tabIndex="{{$index}}" type="text" ng-model="line.data" ng-keypress="keyPress($event, $index, line.data)" value="{{line.data}}"/>
        </li>
    </ul>
控制台记录:

{{$index}}
0
为什么元素的id以这种方式显示?我怎样才能使这种比较有效呢


总的来说,我试图做的是创建新元素并动态聚焦它们。

您需要使用
$timeout
让angular先渲染id表达式。。。否则,您需要在属性上使用
$eval
对其求值

app.directive('focusIt', function($timeout) {
return {
    link: function(scope, elem, attrs){
      $timeout(function(){
          console.log(elem[0].id);
          console.log(scope.focus);
          if (elem[0].id == scope.focus) {
              elem[0].focus();
          }
      });
    }
}
});

请改用
attrs.id
app.directive('focusIt', function($timeout) {
return {
    link: function(scope, elem, attrs){
      $timeout(function(){
          console.log(elem[0].id);
          console.log(scope.focus);
          if (elem[0].id == scope.focus) {
              elem[0].focus();
          }
      });
    }
}
});