2013-02-18 78 views
0

在下面的例子中,accordion-group指令使用accordion-group指令中的“require:'^ accordion'”属性与父手风琴共享控制器和作用域。通过Angular需要属性访问父母的父控制器

如果我想在accordion-group下创建一个子指令,它如何访问手风琴控制器?要求^手风琴和^ accordionGroup似乎并不奏效。

​​

+1

要求拥有'^ accordion'或'^ accordionGroup'的父控制器应该可以工作,我猜这里还有别的事情要做。很难在没有看到实时代码的情况下提供更多的帮助,因此如果您可以在实验中发布一个重复游戏,它会更容易。 – 2013-02-18 12:13:20

+0

好吧,我会(这将是我的第一个jsfiddle!) – ehfeng 2013-02-18 22:48:55

+0

我解决了它。它确实有效......我不知道我为什么不工作...... – ehfeng 2013-02-19 02:03:52

回答

1

它的确如此。我只是很愚蠢。 后代小提琴here

'use strict'; 

angular.module('myApp', []).controller('OneController', function() { 
    this.test = function(element) { 
     element.css('color', 'red'); 
    } 
}).directive('one', function() { 
    return { 
     restrict: 'E', 
     transclude: true, 
     replace: true, 
     controller: 'OneController', 
     template: '<span ng-transclude>And a </span>', 
    } 
}).directive('two', function() { 
    return { 
     restrict: 'E', 
     transclude: true, 
     replace: true, 
     require: '^one', 
     template: '<span ng-transclude>and a </span>', 
    } 
}).directive('three', function() { 
    return { 
     restrict: 'E', 
     transclude: true, 
     replace: true, 
     require: '^one', 
     template: '<span ng-transclude>and a one two</span>', 
     link: function(scope, element, attrs, ctrl) { 
      ctrl.test(element); 
     } 
    } 
});