หลังจากหาตัวอย่างวิธีตั้งค่าองค์ประกอบโฟกัสด้วยเชิงมุมแล้วฉันเห็นว่าส่วนใหญ่ใช้ตัวแปรบางตัวเพื่อดูแล้วตั้งโฟกัสและส่วนใหญ่ใช้ตัวแปรที่แตกต่างกันหนึ่งตัวแปรสำหรับแต่ละฟิลด์ที่ต้องการกำหนดโฟกัส ในรูปแบบที่มีฟิลด์จำนวนมากนั่นหมายถึงตัวแปรต่างๆมากมาย
ด้วยวิธี 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";
}
เป็นทางออกที่ดีในเชิงมุมหรือไม่? มันมีปัญหาไหมกับประสบการณ์ที่ไม่ดีของฉันฉันยังไม่เห็น?