我有一个输入字段和一个$ watch超出其范围变量,触发一些服务器请求。我在请求期间禁用了该字段,但是当它再次重新启用时,该行中缺少游标。我希望它再次出现。
我试图通过例如恢复焦点来恢复焦点。指令How to set focus on input field?但由于某些原因它与启用/禁用字段无关(我同时设置&#34;聚焦&#34;和#34;同时启用&#34;变量)。< / p>
答案 0 :(得分:4)
创建指令
app.directive('focusMe', function($timeout) {
return {
scope: {
trigger: '=focusMe'
},
priority: -1,
link: function(scope, element) {
scope.$watch('trigger', function(value) {
if (value === true) {
$timeout(function() {
element[0].focus();
scope.trigger = false;
}, 300);
}
});
}
};
});
将指令添加到输入字段
<input type="text" focus-me="focusInput" data-ng-model="myModel" required .. />
控制器内的
$scope.focusInput=true;
当$scope.focusInput
为真时,输入字段将被聚焦
答案 1 :(得分:1)
简单方法
<input type="text" ng-disabled="true" required ... />
在您想要启用并关注输入的事件之后,您应该在.ts文件中执行此操作
$scope.enableInput = function () {
document.getElementById("password").disabled = false;
document.getElementById('password').focus();
};
在设置禁用并使用AngularJS再次启用后,您可以将焦点恢复到文本输入字段