我使用角度素材(AM),我想将外部控制器传递给$ mdDialog。 在AM文档中,我们创建如下对话框:
function DialogController($scope, $mdDialog) { ... }
...
$mdDialog.show({
controller: DialogController,
templateUrl: 'dialog1.tmpl.html',
parent: angular.element(document.body),
targetEvent: ev,
clickOutsideToClose:true
})
正如您所见,控制器只是当前控制器中调用$ mdDialog的函数。我想使用外部控制器。
myApp.controller('ElementEditCtrl', function($scope,
$rootScope, $stateParams, $filter, $state, ElementsService, element, personnes) { ... }
正如你所看到的,我对params有一些决心。目前我正在使用$ controller服务来实例化我的控制器:
var ctrl = $scope.$new();
$controller('ElementEditCtrl', {$scope: ctrl, personnes: EmployesService.get(), element: angular.copy($scope.element)});
$mdDialog.show({
controller: ctrl,
templateUrl: 'FrontEnd/App/views/ElementEditView.html',
parent: angular.element(document.body),
targetEvent: ev,
clickOutsideToClose: true,
})
我在浏览器控制台中出现此错误:
错误:ng:areq Bad Argument 争论' fn'不是一个功能,得到了
我需要使用外部控制器,因为我需要从不同的视图打开此对话框,我不想在每个控制器中复制代码。
答案 0 :(得分:1)
提供服务并公开此功能:
function createDialog($scope) {
return function() {
$mdDialog.show({
scope: $scope.$new(),
templateUrl: 'some/temmplate.html,
clickOutsideToClose: true
});
};
然后只需粘贴控制器的范围即可创建对话框。