簡體   English   中英

在子指令中獲取父指令控制器

[英]Get parent directive controller in child directive

我有以下指令:

angular.module('test').directive('childDirective', [function() {
    return {
        restrict: 'E',
        require: '^parentDirective',
        controller: function() {
            // How do I get parentDirective's controller?
        },
        link: function($scope, $element, $attrs, $controller) {
            var data = $controller.parentDirectiveData;
            ....
            ....
        }
    };
}]);

在鏈接函數中,我獲得了$ controller依賴關系,該依賴關系包含對parentDirective控制器的引用。 如何在childDirective的控制器中獲取該引用?

您有兩種選擇,可以將其放在示波器上,也可以將其存儲在控制器也可以訪問的變量中:

angular.module('test').directive('childDirective', [function() {

    var parentCtrl;

    return {
        restrict: 'E',
        require: '^parentDirective',
        controller: function() {
            // parentCtrl will be defined after the link function runs.
        },
        link: function($scope, $element, $attrs, $controller) {
            var data = $controller.parentDirectiveData;
            parentCtrl = $controller
        }
    };
}]);

重要的是請注意,控制器功能將鏈接功能之前運行,因此您只能在異步回調中真正使用它。

在此之前,無法將父級控制器的實例注入子級控制器,因為它依賴於綁定到范圍的指令才能定義該層次結構。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM