Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.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:手动设置焦点以输入文本_Javascript_Angularjs_Focus - Fatal编程技术网

Javascript AngularJs:手动设置焦点以输入文本

Javascript AngularJs:手动设置焦点以输入文本,javascript,angularjs,focus,Javascript,Angularjs,Focus,我需要手动设置输入元素的焦点。我使用的是$event.currentTarget.focus()

我需要手动设置输入元素的焦点。我使用的是
$event.currentTarget.focus()
HTML:

<div ng-repeat="item in items track by $index" ng-dblclick="onDblClick($event,item)">
      <input type="text" ng-model="item.id" ng-disabled="!item.editing" ng-blur="onBlur(item)">
    </div>
$scope.onDblClick = function($event, item) {
      item.editing = true;
      //setting the focus to elemnt but don't know why it's not working
      $event.currentTarget.focus();
    };
<div ng-repeat="item in items track by $index" ng-dblclick="onDblClick($event,item)">
      <input type="text" ng-model="item.id" ng-disabled="!item.editing" ng-blur="onBlur(item)" focus="item.editing">
    </div>
app.directive('focus', function($timeout) {
    return function(scope, elem, attrs) {
      console.log(attrs)
      scope.$watch(attrs.focus, function(newval) {
        if (newval) {
          $timeout(function() {
            elem[0].focus();
          }, 0, false);
        }
      });
    };
  });

这是你的电话号码

无论如何,我是自己想出来的。我创建了一个指令
focus
,并设置了一个
$watch

HTML:

<div ng-repeat="item in items track by $index" ng-dblclick="onDblClick($event,item)">
      <input type="text" ng-model="item.id" ng-disabled="!item.editing" ng-blur="onBlur(item)">
    </div>
$scope.onDblClick = function($event, item) {
      item.editing = true;
      //setting the focus to elemnt but don't know why it's not working
      $event.currentTarget.focus();
    };
<div ng-repeat="item in items track by $index" ng-dblclick="onDblClick($event,item)">
      <input type="text" ng-model="item.id" ng-disabled="!item.editing" ng-blur="onBlur(item)" focus="item.editing">
    </div>
app.directive('focus', function($timeout) {
    return function(scope, elem, attrs) {
      console.log(attrs)
      scope.$watch(attrs.focus, function(newval) {
        if (newval) {
          $timeout(function() {
            elem[0].focus();
          }, 0, false);
        }
      });
    };
  });

这是。

它似乎在工作?您到底需要什么?它只是启用文本框,而不是聚焦文本框。如果双击时看到,则输入元素将被启用。但是如果你点击了enable input元素之外的任何地方,而不是理想情况下,它应该会失去焦点,ngBlur回调应该会被触发,但它不会发生。不管怎样,我误解了:)(编辑掉我写的内容)@klskl抱歉,我没有理解你。