在AngularJS中,焦点不能通过索引工作

时间:2015-01-17 05:36:19

标签: angularjs

我有一个项目列表,其中包含一些单词的更新文本字段,我希望将焦点放在所选索引上单词的末尾。但每次我都关注最后一个索引。

这是我的HTML代码

<body ng-controller="MainCtrl">
  <h1>Hello Plunker!</h1>
  <li ng-repeat="i in number">
    <input focus-on="focusMe" value="sfsfsf" />
    <button type="submit" ng-click="do()">do</button>
  </li>
</body> 

这是我的控制器:

app.directive('focusOn', function() {
   return function(scope, elem, attr) {
      scope.$on('focusOn', function(e, name) {
        if(name === attr.focusOn) {
          elem[0].focus();
        }
      });
   };
});

app.factory('focus', function ($rootScope, $timeout) {
  return function(name) {
    $timeout(function (){
      $rootScope.$broadcast('focusOn', name);
    });
  }
});

app.controller('MainCtrl', function ($scope, focus) {
$scope.number=[1,2,3,4,5,6,7,8,9,10];
  $scope.do=function(){
      focus('focusMe'); 
  }

这是我的plunker

1 个答案:

答案 0 :(得分:0)

正确的解决方案可能取决于您需要支持的浏览器。

你可以试试这个:

scope.$on('focusOn', function(e, name) {

  if (name == attr.name) {

    var element = elem[0];

    element.focus();

    var value = element.value;
    element.value = '';
    element.value = value;
  }
});

演示: http://plnkr.co/edit/pulIrU56qf2J4UjCJlgQ?p=preview