gpt4 book ai didi

javascript - 使用解析参数注入(inject) Controller

转载 作者:行者123 更新时间:2023-12-03 08:09:45 25 4
gpt4 key购买 nike

我正在使用 Angular Material (AM),并且我想将外部 Controller 传递给 $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 的函数。我想使用外部 Controller 。

myApp.controller('ElementEditCtrl', function($scope, 
$rootScope, $stateParams, $filter, $state, ElementsService, element, personnes) { ... }

正如你所看到的,我对参数有一些解决方案。目前我正在使用 $controller 服务来实例化我的 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

我需要使用外部 Controller ,因为我需要从不同的 View 打开此对话框,并且我不想在每个 Controller 中重复代码。

最佳答案

创建一个服务并公开此功能:

function createDialog($scope) {
return function() {
$mdDialog.show({
scope: $scope.$new(),
templateUrl: 'some/temmplate.html,
clickOutsideToClose: true
});
};

然后只需粘贴创建对话框的 Controller 的范围。

关于javascript - 使用解析参数注入(inject) Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34198836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com