2015-03-31 98 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