私は同じ問題を抱えていました.私の修正は、ネストされたディレクティブでどのコントローラーが呼び出されているかを監視することでした.
# Parent Controller
app.controller 'storeController', ($scope, products) ->
$scope.cart = ["chicken", "pizza"]
$scope.addToCart = (item) ->
$scope.cart.push item
# from service
products.get().then (items) ->
$scope.products = items
# Parent Directives
app.directive 'storeContainer', ($scope, config) ->
restrict: 'E'
templatUrl: 'store-container.html'
controller: 'storeController'
# Nested Directive
app.directive 'storeFront', ($scope, config) ->
restrict: 'E'
templatUrl: 'store-front.html'
controller: 'storeController'
# Parent Template templates/directives/store-container.html
<div ng-repeat="item in cart">{{ item }}</div>
<strore-front></store-front>
# Nested Template templates/directives/store-front.html
<ul ng-repeat="item in products">
<li ng-click"addToCart(item)">{{ item }}</li>
</ul>
ここでのバグは、ネストされたディレクティブが、親テンプレートがアクセスできないプロトタイプ チェーン (storeController の複製) に 2 番目のコントローラーを作成することです。解決するには、ネストされたコントローラーを次のように記述します。
# Nested Directive
app.directive 'storeFront', ($scope, config) ->
restrict: 'E'
templatUrl: 'store-front.html'
継承チェーンを作成するためのより良い方法がありますが、AngularJS を学習している多くの人々の問題はこれで解決されます。