在查看了如何使用角度设置焦点元素的示例后,我看到它们中的大多数使用一些变量来监视然后设置焦点,并且它们中的大多数对于要设置焦点的每个字段使用一个不同的变量。在具有许多字段的形式中,这意味着存在许多不同的变量。
考虑到jquery的方式,但是想以角度的方式做到这一点,我提出了一个解决方案,我们使用元素的id将焦点设置在任何函数上,因此,由于我在角度上非常陌生,因此我希望得到一些意见那个方法是正确的,有任何问题,任何可以帮助我更好地做到这一点的方法。
基本上,我创建了一个指令,该指令监视用户使用指令定义的范围值或默认值的focusElement,并且当该值与元素的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";
}
这是一个好的角度解决方案吗?我的不良经验是否会带来一些我还没有看到的问题?