Javascript 如何在AngularJS中处理文本输入的条件焦点和选择?

Javascript 如何在AngularJS中处理文本输入的条件焦点和选择?,javascript,angularjs,Javascript,Angularjs,在这个示例代码中,我想将焦点移到文本输入中,并在用户单击编辑按钮时选择内容,但我不知道如何在AngularJS中执行此操作。使用AngularJS没有直接的方法。您必须使用JavaScript或JavaScript库(如jQuery)进行DOM操作,但不建议在控制器内执行任何DOM操作。 您要做的是使用指令 使用AngularJS没有直接的方法。您必须使用JavaScript或JavaScript库(如jQuery)进行DOM操作,但不建议在控制器内执行任何DOM操作。 您要做的是使用指令 这个

在这个示例代码中,我想将焦点移到文本输入中,并在用户单击编辑按钮时选择内容,但我不知道如何在AngularJS中执行此操作。

使用AngularJS没有直接的方法。您必须使用JavaScript或JavaScript库(如jQuery)进行DOM操作,但不建议在控制器内执行任何DOM操作。
您要做的是使用指令

使用AngularJS没有直接的方法。您必须使用JavaScript或JavaScript库(如jQuery)进行DOM操作,但不建议在控制器内执行任何DOM操作。
您要做的是使用指令

这个问题与非常相似,因此这里有一个非常相似的解决方案:一个焦点指令,它将编辑作为一个属性:

app.directive('focus', function() {
    return function(scope, element, attrs) {
        scope.$watch(attrs.focus, function(newValue) {
            newValue && element[0].focus()
        })
    }
});
正如@Josh已经指出的,我们可以使用原生DOM focus方法,通过使用元素[0]访问原始DOM元素,元素本身是一个包装的jqLite或jQuery(如果加载了元素)

HTML:

<input ng-show="editing" type="text" ng-model="text" value="{{text}}"
  focus="editing">

.

这个问题非常类似,因此这里有一个非常类似的解决方案:一个焦点指令,它将编辑作为一个属性:

app.directive('focus', function() {
    return function(scope, element, attrs) {
        scope.$watch(attrs.focus, function(newValue) {
            newValue && element[0].focus()
        })
    }
});
正如@Josh已经指出的,我们可以使用原生DOM focus方法,通过使用元素[0]访问原始DOM元素,元素本身是一个包装的jqLite或jQuery(如果加载了元素)

HTML:

<input ng-show="editing" type="text" ng-model="text" value="{{text}}"
  focus="editing">


.

选择内容是一个javascript问题,而不是角度特定的问题。顺便说一句,您可以就地编辑,而不是使用ng show和ng hide。在下面的JSFIDLE中使用类似的指令@文卡特很高兴看到我的代码得到了一些使用-@devmao,但不要使用jQuery焦点方法。在我的代码示例中,有一个本机DOM focus方法:。Angular的最佳实践是尽可能避免使用jQuery这样的外部库。@当然,这是一个很好的实现:-选择内容更像是一个javascript问题,而不是特定于Angular的问题。顺便说一句,您可以就地编辑,而不是使用ng show和ng hide。在下面的JSFIDLE中使用类似的指令@文卡特很高兴看到我的代码得到了一些使用-@devmao,但不要使用jQuery焦点方法。在我的代码示例中,有一个本机DOM focus方法:。Angular的最佳实践是尽可能避免使用jQuery这样的外部库。@当然,这是一个很好的实现:-如果可以避免,就不应该在Angular中使用jQuery进行DOM操作。有一个本机DOM方法用于设置focus element.focus,我在@devmao的帖子的评论中链接了它。我知道,焦点不必使用jQuery。实际上,jQuery只封装了一系列Java脚本来执行相同的任务。我只是假设在大多数情况下,最终都会以某种方式使用jQuery。实际上,如果可能的话,在使用Angular时根本不应该使用jQuery。它会产生很多问题,而大多数可以用jQuery解决的问题可以用Angular更简单地解决。我同意你的观点,Angular做得更好。然而,在许多情况下,您最终需要jQuery,即带有javascript的引导css模板或其他商业模板。我只是指出JQuery是执行类似操作的方法之一。酷。在很多情况下你是对的,我对你修改后的答案没有异议+1如果可以避免,则不应在Angular中使用jQuery进行DOM操作。有一个本机DOM方法用于设置focus element.focus,我在@devmao的帖子的评论中链接了它。我知道,焦点不必使用jQuery。实际上,jQuery只封装了一系列Java脚本来执行相同的任务。我只是假设在大多数情况下,最终都会以某种方式使用jQuery。实际上,如果可能的话,在使用Angular时根本不应该使用jQuery。它会产生很多问题,而大多数可以用jQuery解决的问题可以用Angular更简单地解决。我同意你的观点,Angular做得更好。然而,在许多情况下,您最终需要jQuery,即带有javascript的引导css模板或其他商业模板。我只是指出JQuery是执行类似操作的方法之一。酷。在很多情况下你是对的,我对你修改后的答案没有异议+1.