使用解析参数注入控制器
Inject controller with resolve parameters
我正在使用 angular material (AM),我想将一个外部控制器传递给 $mdDialog。
在 AM 文档中,我们创建这样的对话框:
function DialogController($scope, $mdDialog) { ... }
...
$mdDialog.show({
controller: DialogController,
templateUrl: 'dialog1.tmpl.html',
parent: angular.element(document.body),
targetEvent: ev,
clickOutsideToClose:true
})
正如你所见,controller只是当前controller中调用$mdDialog的一个函数。我想使用外部控制器。
myApp.controller('ElementEditCtrl', function($scope,
$rootScope, $stateParams, $filter, $state, ElementsService, element, personnes) { ... }
如您所见,我对参数有一定的决心。目前我正在使用 $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 参数错误
参数 'fn' 不是函数,得到 n
我需要使用外部控制器,因为我需要从不同的视图打开此对话框,而且我不想在每个控制器中重复代码。
制作服务并公开此功能:
function createDialog($scope) {
return function() {
$mdDialog.show({
scope: $scope.$new(),
templateUrl: 'some/temmplate.html,
clickOutsideToClose: true
});
};
然后只需粘贴创建对话框的控制器的范围。
我正在使用 angular material (AM),我想将一个外部控制器传递给 $mdDialog。 在 AM 文档中,我们创建这样的对话框:
function DialogController($scope, $mdDialog) { ... }
...
$mdDialog.show({
controller: DialogController,
templateUrl: 'dialog1.tmpl.html',
parent: angular.element(document.body),
targetEvent: ev,
clickOutsideToClose:true
})
正如你所见,controller只是当前controller中调用$mdDialog的一个函数。我想使用外部控制器。
myApp.controller('ElementEditCtrl', function($scope,
$rootScope, $stateParams, $filter, $state, ElementsService, element, personnes) { ... }
如您所见,我对参数有一定的决心。目前我正在使用 $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 参数错误 参数 'fn' 不是函数,得到 n
我需要使用外部控制器,因为我需要从不同的视图打开此对话框,而且我不想在每个控制器中重复代码。
制作服务并公开此功能:
function createDialog($scope) {
return function() {
$mdDialog.show({
scope: $scope.$new(),
templateUrl: 'some/temmplate.html,
clickOutsideToClose: true
});
};
然后只需粘贴创建对话框的控制器的范围。