【问题标题】:Limit scope of angular element to directive将角度元素的范围限制为指令
【发布时间】:2014-03-20 15:54:36
【问题描述】:

我有一个指令,在这个指令中我想在滚动时操作一些元素。目前我正在使用:

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

这很好,虽然它看起来效率不高。

我真正想做的是将选择器限制在调用指令的元素的范围(子元素)内。在 jQuery 中,我会使用 element.find('.splash-content')element.children('.splash-content'),但在 angularjs 中,您似乎无法将选择器添加到这两种方法中。

那么,这种最好(也是最有效)的“角度”方式是如何做到的?

谢谢!

【问题讨论】:

  • 我认为这是在包含 Angular 之前包含 jQuery 以获得 jQuery 进行 DOM 遍历的完整功能可能值得的情况之一(而不是重新发明轮子或修补东西)。

标签: javascript angularjs


【解决方案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。

【讨论】:

  • 非常聪明。对于这种特殊情况,我选择了angular.element( element.children()[i] ),因为我知道标记以及子元素的位置。但是,当情况并非如此时,您的解决方案将非常有用。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-04
  • 1970-01-01
  • 1970-01-01
  • 2013-10-07
  • 1970-01-01
相关资源
最近更新 更多