我已经阅读了几篇与 AngularJs 中的焦点设置有关的文章和 StackOverflow 问题。
不幸的是,我读过的所有示例都假设有一些属性可以添加到元素中以获得焦点,例如focusMe 指令。
但是,如果我事先不知道将焦点设置到哪个输入怎么办?特别是如何将焦点设置到设置了 $invalid 的表单中的第一个输入元素 - 即验证失败的元素。可能有几个输入验证失败,因此我不能使用仅尝试基于此调用 .focus() 的指令。(我这样做是出于可访问性/WCAG 的原因,在单击提交以最小化按键以查找未通过验证的第一个字段时这样做是一种很好的做法)。
$error 对象将提供所有未通过验证的控件,但它们按失败类型分组,而不是按表单上出现的任何顺序。
我相信我可以想出一些笨拙的方法来做到这一点。表单上的指令,当需要设置焦点时接收一些广播 - 然后该指令可以搜索第一个 $invalid 元素。然而,这似乎非常复杂,我想知道这些是否是一种更好的更“角度”的方式。