最佳答案
在寻找如何设置焦点的角度元素的例子后,我看到他们中的大多数使用一些变量来观察然后设置焦点,他们中的大多数使用一个不同的变量为每个领域,他们想要设置焦点。在一个有很多字段的表单中,这意味着有很多不同的变量。
考虑到 jquery 的方式,但是想要以角度的方式来做,我做了一个解决方案,我们在任何函数中使用元素的 id 来设置焦点,所以,由于我在角度方面是很新的,我想要得到一些意见,如果这种方式是正确的,有问题,无论如何,任何可以帮助我在角度方面做得更好的东西。
基本上,我创建了一个指令来监视用户使用指令定义的范围值,或者默认的 focus Element,当该值与元素的 id 相同时,该元素自己设置焦点。
angular.module('appnamehere')
.directive('myFocus', function () {
return {
restrict: 'A',
link: function postLink(scope, element, attrs) {
if (attrs.myFocus == "") {
attrs.myFocus = "focusElement";
}
scope.$watch(attrs.myFocus, function(value) {
if(value == attrs.id) {
element[0].focus();
}
});
element.on("blur", function() {
scope[attrs.myFocus] = "";
scope.$apply();
})
}
};
});
需要通过某种原因获得焦点的输入将以这种方式进行
<input my-focus id="input1" type="text" />
这里有任何要设置焦点的元素:
<a href="" ng-click="clickButton()" >Set focus</a>
设置焦点的示例函数是:
$scope.clickButton = function() {
$scope.focusElement = "input1";
}
这是一个很好的角度解决方案吗? 它是否有问题,以我贫穷的经验,我还没有看到呢?