Odak öğelerinin açısal olarak nasıl ayarlanacağına dair örnekler aradıktan sonra, çoğunun izlemek için bazı değişkenler kullandıklarını ve çoğunun odak ayarlamak istedikleri her alan için bir farklı değişken kullandığını gördüm. Çok sayıda alana sahip bir formda, bu birçok farklı değişkeni ifade eder.
Jquery yolunu göz önünde bulundurarak, ancak bunu açısal bir şekilde yapmak isteyerek, öğenin kimliğini kullanarak herhangi bir işleve odaklandığımız bir çözüm yaptım, bu nedenle, açısal olarak çok yeniyim, eğer bu yol doğrudur, sorun yaşarsınız, her neyse, bunu açısal olarak daha iyi yapmama yardımcı olabilecek herhangi bir şey.
Temel olarak, kullanıcı tarafından yönergeyle veya varsayılanın focusElement ile tanımlanan bir kapsam değerini izleyen bir yönerge oluşturuyorum ve bu değer öğenin kimliği ile aynı olduğunda, bu öğe odağı kendisi ayarlıyor.
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();
})
}
};
});
Herhangi bir nedenle odaklanması gereken bir girdi bu şekilde işe yarar
<input my-focus id="input1" type="text" />
Burada odaklanmak için herhangi bir öğe:
<a href="" ng-click="clickButton()" >Set focus</a>
Ve odağı belirleyen örnek işlev:
$scope.clickButton = function() {
$scope.focusElement = "input1";
}
Bu açısal olarak iyi bir çözüm mü? Zayıf tecrübemle henüz görmediğim sorunları var mı?