2014-05-20 37 views
0

在我的Angular應用程序中,名爲CaptureMovements的指令可響應高亮行和捕獲其內容。在不向每行添加指令的情況下捕獲錶行的內容

<tr ng-repeat="element in body" capture-movements='{{element}}' > 

這也可以在文件的layout.html觀察以下plnkr: http://plnkr.co/edit/fB8RLOXpkiUZqRzhTKfj

所以,如果你運行plnkr,然後按G,然後按1鍵盤上的(G + 1)你會注意到一行被突出顯示。 Eveytime你擊中了g,然後另一行突出顯示。

現在,如果表中有數百行,這會減慢應用程序的速度(必須是廣播和接收機制)。

理想情況下,如何解決角度問題?

任何線索讚賞。

回答

0

AngularJS的方式是爲每一行添加一個指令,並按照您的操作對擊鍵事件作出反應。有多種方法不涉及「廣播」擊鍵事件,但它確實涉及將每條指令放置在單獨的行上 - 它可以是一個自定義指令,就像您的情況一樣,或者也可以是有條件地應用類的ng-class指令。

無論哪種方式,由於放置觀察者的數量,您將面臨大量行的性能問題。

最簡單的方法是使用本地Javascript方式。 請考慮這一點 - 假設您的應用程序不使用AngularJS。別想到jQuery。

現在,你會如何編寫你的JavaScript代碼來執行相同的功能? 首先選擇表格的所有n行並存儲它。

var tableRows = document.getElementById('myCustomTable') 
         .getElementByTagName('tr'); 

這將選擇表中的所有行。是的,這將是性能密集型的,但不像在每一行上放置單獨的指令一樣多。

現在,有一個keystroke元素的事件處理程序,然後將邊界應用到第n行並從第(n-1)行刪除邊界。自從您提前獲取並存儲它之後,您不必每次都獲取第n行。

+0

@katootie ..一旦我有了tableRows ..我可以使用什麼函數在運行時向特定的行添加一個類? – runtimeZero

相關問題