2014-12-16 4 views
1

Новое для углового и попытка обернуть мою голову вокруг этих областей. Я хочу, чтобы функции наследовались бесконечно вниз по моему дереву. Код ниже - это то, что у меня есть, и оно работает на первом уровне, но после этого я как бы проиграл. Есть идеи?Угловая рекурсивная директива с функциями

<tree get-branch="GetBranch(parent, $event)" show-menu="ShowMenu(parent)" family="i"></tree> 

$scope.GetBranch = function (parent, $event) {... 
$scope.ShowMenu = function(parent) {... 

App.directive("tree", function (RecursionHelper) { 
return { 
    restrict: "E", 
    scope: { 
     getBranch: "&", 
     showMenu: "&", 
     family: '=' 
    }, 
    template: 
     '<a ng-right-click="showMenu({ parent: family })" ng-click="getBranch({parent:family, $event:$event})" >{{ family.Alias }}</a>' + 
     '<ul ng-if="family.IsCategory">' + 
      '<li ng-repeat="child in family.Children" ng-class="{category: child.IsCategory}">' + 
       '<tree get-branch="getBranch({family:family, $event:$event})" show-menu="showMenu({ family: family })" family="child"></tree>' + 
      '</li>' + 
     '</ul>', 
    compile: function (element) { 
     return RecursionHelper.compile(element, function (scope, iElement, iAttrs, controller, transcludeFn) { 
      // Define your normal link function here. 
      // Alternative: instead of passing a function, 
      // you can also pass an object with 
      // a 'pre'- and 'post'-link function. 
     }); 
    } 
}; 
}); 

ответ

0

Если вы хотите, чтобы какая-либо функция использовалась в любом месте или какое-либо значение для совместного использования в любом месте вашего приложения, я думаю, что ваш подход неправильный. Обычно это то, что должно быть на службе или на заводе. Посмотрите на https://docs.angularjs.org/guide/services

+0

Сделал быстрый поиск и: должен ли я использовать сервис, а затем добавить его в свою область действия со ссылкой? Или как я могу получить его там? – user3046591

+0

Да, вы должны получить его с помощью инъекции, как вы используете $ scope или любое угловое обслуживание. Например, если ваша служба называется «myFunctions», то просто добавьте myFunctions помимо $ scope – sam

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