2015-09-15 45 views
0

我正在尋找一個乾淨的方式,當給定類型的所有子指令已與檢測檢測。我希望父指令是通用的,所以它應該工作,不管子元素是否使用ng-repeat。請注意,ng-repeat會更改鏈接順序。當父角指令的所有子指令有聯繫

實施例1:所有的子元素已被鏈接後的母體後鏈路功能將被執行,所以可簡單地跟蹤的每個子,因爲它被鏈接然後父後鏈路中處理它們。

<parent> 
    <child></child> 
    <child></child> 
    <child></child> 
</parent> 

示例2:ng-repeat會更改鏈接順序。在這種情況下,在嘗試鏈接孩子之前,父母后鏈接已經完成。因此,我不能使用父後鏈接功能,以確定所有的孩子已經聯繫在一起,但我可以添加$範圍的檢查。$最後每個孩子。

<parent> 
    <child ng-repeat="c in children"></child> 
</parent> 

我在快到了一個不錯的,乾淨解決方案來處理這兩種情況下,因爲它似乎是錯誤的父母要檢查是否兒童使用NG-重複與否的問題。目前我正在做的是在模板中插入一個虛擬孩子以使用ng-repeat來容納transcluded的孩子。

<child ng-transclude ng-repeat="dummy in [0]"></child> 

這迫使示例1的行爲與示例2一樣,並始終生成$ scope。$ last。它似乎工作,但有一個確定的氣味。

回答

0

也許是這樣的:

<parent> 
    <child></child> 
    <child></child> 
    <child last="true"></child> 
</parent> 

然後孩子指令檢查$lastattrs.last,讓孩子指令觸發事件或任何內與家長溝通

+0

感謝。與目前我正在使用的hacky方法相比,這是一個明顯的改進。儘管如此,它仍然覺得應該有一些事件或回調,我可以進入。 – Bedrock