我有这段Angular代码:
<div class="element-wrapper" ng-repeat="element in elements">
<div class="first-wrapper">
<div class="button" ng-click="doSomething(element,$event)">{{element.name}}</div>
</div>
<div class="second-wrapper">
<input type="text" value="{{element.value}}">
</div>
</div>
我希望发生的事情:当用户点击按钮时,输入元素将获得焦点。
在单击按钮元素并将其聚焦后,如何找到输入元素?
我可以编写以下类似的函数:
function doSomething(element,$event) {
//option A - start manipulating in the dark:
$event.srcElement.parentNode.childNodes[1]
//option B - wrapping it with jQuery:
$($event.srcElement).closest('.element-wrapper').find('input').focus();
}
他们两个都不起作用 - 有没有更好的Angular方式来解决这个问题?像jQuery中使用.closest()
和.find()
这样的函数吗?
更新:
我发现这种方法可行(但仍然不像正确的解决方案):
function doSomething(element,$event) {
setTimeout(function(){
$($event.srcElement).closest('.element-wrapper').find('input').focus();
},0)
}
我正在使用setTimeout将其包装起来,这样在Angular完成所有操作后,它会聚焦于输入元素。