【问题标题】:<input> elements in ng-repeat don't get focused after editing inputng-repeat 中的 <input> 元素在编辑输入后没有获得焦点
【发布时间】:2015-12-18 15:52:38
【问题描述】:

我正在实施可编辑表格。我在网络上的所有教程中都观察到了相同的错误。如果您有 2 个可编辑项,则更改其中之一。之后,您无法专注于另一个。您必须单击两次。

这是其中的教程之一: http://www.codelord.net/2014/05/10/understanding-angulars-magic-dont-bind-to-primitives/

这是来自它的jsfiddle:

jsfiddle with a bug

这是控制器代码:

<div ng-controller="bookCtrl">
    <div ng-repeat="tag in book.tags track by $index">
        <input type="text" ng-model="book.tags[$index]"/>
    </div>

    My tags are <b>really</b>: {{ book.tags }}
</div>

请注意,track by 在这里没有帮助。本教程中的所有三个示例(以及许多其他示例)都有这个问题。

我该如何解决这个问题?

更新:我在 chrome 47 上,在 Firefox 中也观察到同样的情况。 更新 2:我已上传 video,错误不会 100% 重现,但最后一次鼠标单击表明问题。我的鼠标很好用!

【问题讨论】:

  • 我真的不知道怎么了。我试试你的小提琴,但我可以编辑一个输入并关注下一个。浏览器问题?
  • 这些模型变化是发生在浏览器还是代码(控制器)中?
  • 1) 更新了浏览器信息。 2)通过模型更改我的意思是编辑输入内容。
  • 在 IE11 或 Chrome 47 上看不到问题
  • @jbrown 看看视频,请。我的鼠标功能正常!

标签: javascript angularjs input focus


【解决方案1】:

HTML:

<div ng-controller="bookCtrl">
  <div ng-repeat="tag in book.tags track by $index">
    <input type="text" ng-model="book.tags[$index]" ng-focus="selectText($event)" />
  </div>

  My tags are <b>really</b>: {{ book.tags }}
</div>

将此添加到控制器:

    $scope.selectText = function($event) {
      $event.target.select();
    };

【讨论】:

  • 好的,要么我不明白这个问题,要么是你的环境有问题。
  • 您能否在多次点击时重现该问题?
  • 不,我无法复制它。我的假设是否正确,您希望在元素获得焦点时选择文本?
  • 没有。我希望我的光标进入输入。我单击,但光标仍在先前的输入中。我单击,但没有任何反应,请检查视频中的最后两次单击。我用 .focus() 而不是 .select() 尝试了你的方法,但它也无济于事。
  • 不,我根本无法重现
猜你喜欢
  • 2019-08-15
  • 2014-12-17
  • 1970-01-01
  • 1970-01-01
  • 2020-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多