Вызов функции внутри $ mdDialog из родительского контроллера - PullRequest
0 голосов
/ 18 января 2019

Мне нужно вызвать функцию в $ mdDialog . Эта функция передается моей директиве от родителя.

<get-list callback="getList()" ></get-list>

Чтобы получить функцию из моей директивы get-list.

function directive() {

  return {
    restrict: 'E',
    scope: {
      callback: '&?'
    },
    templateUrl: "",
    controller: function($scope) {
      'ngInject';

}

теперь внутри моей директивы get-list у меня есть $ mdDialog.

  $scope.save = function(){
    $mdDialog.show({
      templateUrl: '',
      escapeToClose: true,
      clickOutsideToClose: true,

      controller: function($scope) {

        $scope.teste = function(){
          $scope.callback()
        }

      }
    })
  }

Мне нужно вызвать функцию getList () внутри нее, и я получаю ошибку $ scope.callback () не является функцией

1 Ответ

0 голосов
/ 18 января 2019

$mgDialog имеет изолированную область видимости, которая отличается от той, что указана в вашей директиве, Вы можете попытаться отследить исходный объем и использовать его в $mgDialog controller

 $scope.save = function(){
    var outerScope = $scope;
    $mdDialog.show({
      templateUrl: '',
      escapeToClose: true,
      clickOutsideToClose: true,
      controller: function($scope) {
        $scope.teste = function(){
          outerScope.callback();
        }
      }
    })
  }

или передать обратный вызов в качестве параметра

$scope.save = function(){
    $mdDialog.show({
      templateUrl: '',
      escapeToClose: true,
      clickOutsideToClose: true,
      locals: {
        callback: $scope.callback
      },
      controller: function($scope, callback) {
        $scope.teste = function(){
          callback();
        }
      }
    })
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...