2014-02-20 70 views
0

我有一個指令,並且在這個指令中我想操縱滾動上的一些元素。目前我正在使用:角度元素的範圍限制爲指令

angular.element(document.getElementsByClassName('splash-content')); 

這是好的,但它似乎不是很有效。

我真的很想做的就是將選擇器限制在指令被調用的元素的作用域(子元素)上。在jQuery中,我使用element.find('.splash-content')element.children('.splash-content'),但在angularjs中,似乎無法將選擇器添加到這兩種方法中的任何一種。

那麼,這是如何最好(和最有效地)完成「角」的方式?

謝謝!

+0

我認爲這是其中包括jQuery之前,您包括Angular獲得jQuery的完整功能進行DOM遍歷可能是值得的(而不是重新發明輪子或修補的東西)之一。 – shaunhusain

回答

1

我創建展示你如何能做到這樣的事情,而不包括jQuery的怪物一個簡單的小提琴:http://jsfiddle.net/ADukg/4769/

例如,把這個在你的指令:

var childFind = function(children, className, results) { 
    for(var i=0; i<children.length; i++){   
     var child = angular.element(children[i]); 
     if(child.hasClass(className)){ 
      results.push(child); 
     }      
     childFind(child.children(), className, results);   
    } 
}    

childFind(children, 'one', results); 

顯然,這種事物並不像jQuery所提供的方法那麼廣泛或完整,但是如果您只需要一些小功能,那麼我會選擇在不需要jQuery的情況下在這裏和那裏添加一個簡單的輔助函數。

+0

非常聰明。對於這個特定場景,我選擇了'angular.element(element.children()[i])',因爲我知道標記以及子元素的位置。如果情況並非如此,您的解決方案將非常有用。謝謝! – nick