Как получить доступ к функции родительского контроллера внутри дочерней директивы - PullRequest
0 голосов
/ 15 октября 2018

Как я могу вызвать функцию из родительского контроллера внутри дочерней директивы?

мой контроллер выглядит примерно так.

angular.module('myVillage')
  .controller('myVillageController', myVillageController);

function myVillageController($scope, $q, $element, $timeout) {
  function moveHome() {
    console.log("moved home")
  }
}

моя директива выглядит примерно так.

angular
  .module('myVillage')
  .directive('myVillagModal', myVillagModal);

var vm = this,

  cachedKeys = {},
  limitInit = 500;
function myVillagModal(myVillage, $filter) {
  return {
    restrict: 'E',
    templateUrl: myVillagelTemplateUrl,
    bindToController: true,
    scope: {
      items: '=',
      selectedItems:'=',
      selectedItemsChanged: '&'
    },
    transclude: true,
    controller: myVillageController,
    controllerAs: 'vm'
  };

  function myVillageController() {
    //....
  }
}

Я хочу вызвать функцию moveHOme внутри директивы move-village.

<div ng-controller="myVillageController">
  <move-village></move-village>
  </div>

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Спасибо вам, люди, за попытку ответить.

Я не смог передать $ scope внутри myVillagecontroller из-за того, что мне не удалось получить доступ к области родительского контроллера.

здесьмой ответ.

angular
  .module('myVillage')
  .directive('myVillagModal', myVillagModal);

var vm = this,

  cachedKeys = {},
  limitInit = 500;
function myVillagModal(myVillage, $filter) {
  return {
    restrict: 'E',
    templateUrl: myVillagelTemplateUrl,
    bindToController: true,
    scope: {
      items: '=',
      selectedItems:'=',
      selectedItemsChanged: '&'
    },
    transclude: true,
    controller: myVillageController,
    controllerAs: 'vm'
  };

  function myVillageController($scope) {
    //$scope.$parent now gives the scope of parent controller
    //....
    $scope.$parent.moveHome(); //this gives 'moved home'
  }
}
0 голосов
/ 15 октября 2018

Вы можете попробовать

$scope.$parent.moveHome();

с дочернего контроллера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...