2016-05-12 39 views
4

我有两个$mdDialog,我想在两个不同的视图中使用,每个控制器是完全相同的。我想要的是在每个控制器中都有$mdDialog.show()函数,传递一个对象和一个控制器文件来完成这项工作。

但是当我尝试这个时,我得到一个错误,说DialogCtrl没有定义。

例如, 在视图控制器:

angular.module('myApp') 
     .controller('myViewController', [ 
      '$scope', 
      '$mdDialog', 
      myViewController 
     ]); 

function myViewController($scope, $mdDialog, myObj) { 

    var obj = myObj; 
    vm.showDialog = function(event) { 
      $mdDialog.show({ 
        controller: DialogCtrl, 
        templateUrl: 'partials/dialog.html', 
        clickOutsideToClose: false, 
        parent: angular.element(document.body), 
        targetEvent: event, 
        openFrom: {left: 1500}, 
        closeTo: {left: 1500}, 
        locals: { object: obj } 
       }) 
       .then(function(response) { 
       //do stuff 
       }); 

}; 

然后我对话控制器:

angular.module('myApp') 
     .controller('DialogCtrl', [ 
      '$scope', 
      '$mdDialog', 
      'object', 
      DialogCtrl 
     ]); 

    function DialogCtrl($scope, $mdDialog, object) { 
     $scope.obj = object; 

     $scope.answer = function(answer) { 
      $mdDialog.hide({ 
       answer: answer, 
       dataToPass: $scope.obj.name 
      }); 
     }; 

    } 

回答

9

尝试将控制器名下报价:

$mdDialog.show({ 
       controller: 'DialogCtrl', 
       templateUrl: 'partials/dialog.html', 
       clickOutsideToClose: false, 
       parent: angular.element(document.body), 
       targetEvent: event, 
       openFrom: {left: 1500}, 
       closeTo: {left: 1500}, 
       locals: { object: obj } 
      }) 

这将删除错误。

+0

是的!非常感谢! – tester123