Sau khi tìm kiếm các ví dụ về cách đặt các yếu tố lấy nét bằng góc, tôi thấy rằng hầu hết trong số họ sử dụng một số biến để theo dõi sau đó đặt tiêu điểm và hầu hết trong số họ sử dụng một biến khác nhau cho mỗi trường mà họ muốn đặt tiêu điểm. Trong một biểu mẫu, với nhiều trường, có nghĩa là rất nhiều biến khác nhau.
Với ý nghĩ về jquery, nhưng muốn làm điều đó theo cách góc cạnh, tôi đã đưa ra giải pháp là chúng tôi đặt trọng tâm vào bất kỳ hàm nào bằng cách sử dụng id của phần tử, vì vậy, vì tôi còn rất mới về góc cạnh, tôi muốn có một số ý kiến nếu cách đó là đúng, có vấn đề, bất cứ điều gì, bất cứ điều gì có thể giúp tôi làm điều này theo cách tốt hơn về góc độ.
Về cơ bản, tôi tạo một chỉ thị theo dõi giá trị phạm vi do người dùng xác định bằng chỉ thị hoặc focusElement của mặc định và khi giá trị đó giống với id của phần tử, phần tử đó sẽ tự đặt tiêu điểm.
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();
})
}
};
});
Một đầu vào cần tập trung vào một số lý do, sẽ làm theo cách này
<input my-focus id="input1" type="text" />
Đây là bất kỳ phần tử nào để đặt tiêu điểm:
<a href="" ng-click="clickButton()" >Set focus</a>
Và ví dụ về chức năng đặt tiêu điểm:
$scope.clickButton = function() {
$scope.focusElement = "input1";
}
Đó có phải là một giải pháp tốt trong góc cạnh? Nó có vấn đề mà với kinh nghiệm kém của tôi mà tôi chưa thấy?