【问题标题】:Accessing parent's parent controllers through Angular require attribute通过 Angular 的 require 属性访问父级的父级控制器
【发布时间】:2023-03-28 10:56:01
【问题描述】:

在下面的示例中,accordion-group 指令与父手风琴共享一个控制器和范围,使用accordion-group 指令中的“require: '^accordion'”属性。

如果我想在手风琴组下创建一个子指令,它如何访问手风琴控制器?要求 ^accordion 和 ^accordionGroup 似乎不起作用。

https://github.com/angular-ui/bootstrap/blob/master/src/accordion/accordion.js

【问题讨论】:

  • 需要一个带有^accordion^accordionGroup 的父控制器应该可以工作,我想这里还有其他事情发生。很难在没有看到实时代码的情况下提供更多帮助,所以如果你可以在你的实验中发布一个 plunker,那就更容易了。
  • 好的,我会的(这将是我的第一个 jsfiddle!)
  • 我解决了。它确实有效...我不知道为什么我的不工作...

标签: angularjs angularjs-directive


【解决方案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);
        }
    }
});

【讨论】:

    猜你喜欢
    • 2016-01-25
    • 2017-04-20
    • 1970-01-01
    • 2019-01-16
    • 2021-11-05
    • 2021-10-31
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    相关资源
    最近更新 更多