Angularjs 捕获表行的内容而不向每行添加指令

Angularjs 捕获表行的内容而不向每行添加指令,angularjs,angularjs-directive,Angularjs,Angularjs Directive,在我的Angular应用程序中,一个名为CaptureMotations的指令负责高亮显示一行并捕获其内容 <tr ng-repeat="element in body" capture-movements='{{element}}' > 这也可以在以下plnkr中的layout.html文件中看到: 因此,如果您运行plnkr,然后在键盘上点击g,然后点击1 g+1,您将注意到一行高亮显示。每次点击g和1时,另一行将高亮显示 现在,如果表有数百行,这会减慢应用程序的速度,而应用

在我的Angular应用程序中,一个名为CaptureMotations的指令负责高亮显示一行并捕获其内容

<tr ng-repeat="element in body" capture-movements='{{element}}' >
这也可以在以下plnkr中的layout.html文件中看到:

因此,如果您运行plnkr,然后在键盘上点击g,然后点击1 g+1,您将注意到一行高亮显示。每次点击g和1时,另一行将高亮显示

现在,如果表有数百行,这会减慢应用程序的速度,而应用程序必须是广播和接收机制

理想情况下,这样一个问题应该如何以角度解决


任何线索都值得欣赏。

AngularJS的方法是在每一行中添加一个指令,并像您所做的那样对关键笔划事件做出反应。有多种方法不涉及广播击键事件,但它确实涉及将每个指令放置在单独的行上-它可以是一个自定义指令,就像您的情况一样,也可以是有条件地应用类的ng class指令

无论哪种方式,由于放置了大量观察者,您都将面临大量行的性能问题

最简单的方法是使用本机Javascript。 考虑这一点——假设你的应用程序不使用盎格鲁JS。甚至不要考虑jQuery

现在,您将如何编写javascript代码来执行相同的功能? 首先,选择表的所有n行并存储它

var tableRows = document.getElementById('myCustomTable')
                        .getElementByTagName('tr');
这将选择表中的所有行。是的,它将是性能密集型的,但不如在每行上放置单独的指令


现在,为击键元素创建一个事件处理程序,然后将边框应用于第n行,并从第n-1行删除边框。您不必每次都提取第n行,因为您已经提前提取并存储了它。

@katootie。。一旦我有了桌子。。在运行时,我可以使用什么函数将类添加到特定行?