Я использую угловой материал (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) { ... }
Как вы можете видеть, у меня есть определенное решение в параметрах. На данный момент я использую сервис $ контроллера для создания экземпляра моего контроллера:
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,
})
И я эта ошибка в моем браузере консоли:
Ошибка: нг: areq Bad Довода Аргумент «Fn» не функция, полученная n
Мне нужно использовать внешний контроллер, потому что мне нужно открыть это диалоговое окно из разных представлений, и я не хочу дублировать код в каждом контроллере.
Можете ли вы представить простой плункер, который воспроизводит ту же ошибку, которую вы получаете? –