2013-12-17 34 views
4

編譯完成後需要觸發一個事件。如何從AngularJS的編譯中獲得承諾?

這是我父控制器是什麼樣子:

myApp.directive("ParentDirective", ["$rootScope", "$compile", 
    function($rootScope, $compile) { 
     return { 
      link: function (scope, element) { 
       var onClick = function() { 
        if (!scope.childDir) { 
         scope.childDir = $compile('<div ng-controller="childCtrl"/>')(scope); 
         $(scope.element).append(scope.childDir); 
        } 
        $rootScope.$broadcast('event'); 
       } 

       $(element).click(onClick); 
      } 
     } 
    } 
]); 

而在childCtrl我有一個聽衆:

$rootScope.$on('event', doSomething); 

的問題是,該指令處理髮生我控制器觸發事件​​之後。有沒有辦法從編譯器獲得承諾或在編譯發生後以任何方式觸發事件?

回答

0

您可以在postLink函數中觸發事件。嘗試一下。

compile: function compile(tElement, tAttrs, transclude) { 
    return { 
    pre: function preLink(scope, iElement, iAttrs, controller) { ... }, 
    post: function postLink(scope, iElement, iAttrs, controller) { 
     $rootScope.$broadcast('event'); 
    } 
    }