0

Я могу получить доступ к функциям контроллера один раз в моей родительской директиве, используя оператор $ parent, но это не работает в рекурсивных дочерних директивах. Ниже приведен пример моего кода (я попытался сократить это немного для этого):Angular1.3: Функция контроллера доступа внутри рекурсивного шаблона директивы?

// пример контроллера (определяется с помощью controllerAs): ---

var View2Ctrl = function(){ 

     //function i am trying to access: 
     this.getNumber = function(){ 
     return 5; 
     } 
. 
. 
. 
angular.controller('View2Ctrl',............ 

// 'комментарии 'директива шаблона: -

<li> 
     <!-- I'm trying to access the function in here: --> 
     <!-- below line works just once here, does not load in recursive child directives below: --> 
     <strong> Number: </strong> {{ $parent.View2Ctrl.getNumber() }} 

      <!-- below line gets replaced with a recursive child directive again --> 
      <span class="comments-placeholder" ></span>  
</li> 

//' Комментарии directive.js: ---

var comments = function($compile){ 
    return { 
    templateUrl : 'modules/comments/commentsDirective.html', 
    restrict:'E', 
    scope:{ 
     collection: '=' 
    }, 
    link: function(scope, element, attrs){ 
     if(scope.collection.data.replies){ 
      var elementResult = angular.element(element[0].getElementsByClassName('comments-placeholder')); 

      elementResult.replaceWith($compile('<ul ng-repeat="comment in collection.data.replies.data.children><comments collection="comment"></comments></ul>')(scope)); 
     } 
    } 
    }; 
}; 
+0

передать функцию как атрибут в область действия директивы – charlietfl

ответ

1

Вы ча n доступ к родительскому контроллеру this с require.

var comments = function($compile){ 
    return { 
    ... 
    require: '^ngController', 
    link: function(scope, element, attrs, ctrl){ 
     $scope.number = ctrl.getNumber(); 
    } 
    }; 
}; 

Но всегда лучше иметь сервис, который действует как модель и хранит данные как для контроллера, так и для директив.

Смежные вопросы