从父控制器调用$ mdDialog中的函数

时间:2019-01-18 16:26:23

标签: javascript angularjs angular-material

我需要在 $ 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 :(得分:1)

$mgDialog的隔离范围不同于您的指令之一, 您可以尝试跟踪原始范围并在$mgDialog控制器中使用它

 $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();
        }
      }
    })
  }