2015-03-31 179 views
0

我正在寻找一种方法来标记嵌套指令的深度。 比方说,我们有一个项目,容器和CH-项目,我窝他们 这样几次:AngularJS嵌套指令深度

<ch-item-container> 
    <ch-item> 
     <ch-item></ch-item> 
     <ch-item-container> 
     <ch-item> 
      End of tree 
     </ch-item> 
     </ch-item-container> 
    </ch-item> 
    </ch-item-container> 

有没有一种方法,以纪念在不附加东西,像这样的深度?

<ch-item depth="0"></ch-item> 

我准备用这个例子中plunker:http://plnkr.co/edit/zC0XCeWJttroAX99Qc6i?p=preview

是它也许可能通过一个变量“向下”的元素?

回答

1

一个解决方案是计算每个作用域的迭代次数$parent:这会给你一个相对于$rootScope的作用域深度。

这里是一个实现:http://plnkr.co/edit/jDfqB1KnFa7oDHMfVhri?p=preview

随着共享服务之中:

chItemModule.service('depth', function() { 
    return function depth(scope, d) { 
    d = d || 0; 
    if (!scope.$parent) { 
     return d; 
    } 
    return depth(scope.$parent, d + 1); 
    } 
}); 
+0

好吧,这看起来不错+1 – Bongo 2015-03-31 23:54:15