我正在尝试实现用户与列表元素交互的功能。按Enter键后,将调用一个函数。我希望函数在当前元素之后立即创建一个新的列表元素。创建元素后,我希望dom专注于该元素。这是代码:
$scope.lines.splice(lineNum+1,0, {'data':""});
document.getElementById(lineNum+1).focus();
其中lines是绑定到列表元素的数据列表。但是,当前结果是第一行运行,但尚未创建dom元素。所以第二行是在更新dom之前运行的。例如,当您在第4行按Enter键时,它会聚焦在第5行。然后最终它会生成另一条线,将第5行推到第6行。因此,最终结果将集中在第6行。
我已经搞砸了在$ scope中包装第一行。$ apply函数但无济于事。
答案 0 :(得分:0)
如果您的元素处于 ng-repeat ,那么您可以使用 ng-focus 指令和 $ last 选项将焦点设置为元素