无法使用Javascript对光标进行聚焦
我有一个有棱角的应用程序。在一个控制器中,我有一个隐藏的答案字段。使用ng click单击按钮时,将显示该字段。我想将光标聚焦在该字段中。我试过使用:无法使用Javascript对光标进行聚焦,javascript,angularjs,Javascript,Angularjs,我有一个有棱角的应用程序。在一个控制器中,我有一个隐藏的答案字段。使用ng click单击按钮时,将显示该字段。我想将光标聚焦在该字段中。我试过使用: document.getElementById("answer").focus(); 但这不起作用。但是,当提交答案时,会运行一些代码,然后运行document.getElementById(“答案”).focus()工作 显示该字段的原始函数是: $scope.startStream = function () { $scope.show
document.getElementById("answer").focus();
但这不起作用。但是,当提交答案时,会运行一些代码,然后运行document.getElementById(“答案”).focus()代码>工作
显示该字段的原始函数是:
$scope.startStream = function () {
$scope.showStream = true;
document.getElementById("answer").focus();
};
为什么它不聚焦光标 我知道这里的问题是“为什么它不聚焦光标”
这是因为在整个函数执行后,模板由Angular处理。此时,showStream被选中,按钮出现。调用document.getElementBy时,模板尚未处理,且按钮不存在。如果要使用$scope.showStream
,可以使用一个简单的指令:
angular.module('app')
.directive('focusOnMe', function () {
return {
scope: {
showStream: '='
},
link: function ($scope, $element, $attrs) {
$scope.$watch('showStream', function () {
if ($scope.showStream) {
$element[0].focus();
}
});
}
};
});
这样使用:
<input type="text" ... focus-on-me="showStream" />
正如上面的评论所提到的,您尝试这样做的方式并不是通常以角度来完成的。您应该使用另一种解决方案(从链接中)来正确地执行此操作。当您试图从控制器中的DOM中获取元素时,您就知道有些事情做得不对。我不知道如何对此进行表决。但我肯定看到过其他指令,它看起来确实比操作DOM更好。Angular的思想是DOM操作是由数据驱动的,因此指令比直接选择元素更受欢迎。哦,好的,非常感谢。