我有这个角度代码:
<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()
and as之类的函数?.find()
更新:
我发现这个 hack 是有效的(但它似乎仍然不是正确的解决方案):
function doSomething(element,$event) {
setTimeout(function(){
$($event.srcElement).closest('.element-wrapper').find('input').focus();
},0)
}
我用 setTimeout 包装它,所以在 Angular 完成所有操作后,它会专注于输入元素。