我不知道我是不是在这里犯了一个愚蠢的错误(为此我提前道歉)。或者就AngularJS逻辑而言,我缺少一些东西。所以,我有一个自定义的$ mdDialog,它是通过按下按钮触发的。从这个$ mdDialog,我需要打开2个不同的$ mdDialog窗口,具体取决于用户的选择。这可以很好地保持控制器嵌套在同一个父控制器中(因为我使用$ mdDialog,我有很多控制器)。
一旦我想拆分这些控制器以实现代码可管理性,我就无法将它们注入到父控制器中,并且AngularJS正在给我一个 Unknown Provider 错误。 这是我的索引文件,其中包含指向主模块和控制器的链接:
BufferedImage.TYPE_INT_ARGB
Angular模块:
<script src="js/app.js"></script>
<script src="js/controllers/AppController.js"></script>
<script src="js/controllers/DatePickController.js"></script>
“父控制器”(触发第一个$ mdDialog窗口):
angular.module('demoApp', ['ngMaterial']);
和“孩子”控制器: 角 .module( 'demoApp') .controller('DatePickController',['$ scope','$ mdDialog',函数($ scope,$ mdDialog){ $ scope.cancel = function(){$ mdDialog.cancel();} $ scope.months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov', '月'];
angular
.module('demoApp')
.controller('AppController', ['$scope', '$mdDialog', 'DatePickController',
function($scope, $mdDialog, DatePickController){
$scope.showConfirm = function(event) {
$mdDialog.show({
targetEvent: event,
templateUrl: 'templates/mainDialogTemplate.html',
controller: function($scope, $mdDialog, employee){
$scope.employee = employee;
$scope.closeDialog = function(){$mdDialog.hide();}
$scope.pickDate = function(){$mdDialog.show({
templateUrl:'templates/calendarDialogTemplate.html',
parent: angular.element(document.body),
clickOutsideToClose: true,
controller: 'DatePickController'
})
}
},
locals: {employee: $scope.userName}
})
};
}])
那有什么不对?
答案 0 :(得分:0)
您不需要注入控制器。使用angular.controller('name', function() {...})
声明它们时,请指定名称。现在,您只需使用该名称来判断对话框正在使用哪个控制器。
您已使用对话框控制器'DatePickController'
的名称。您的DatePickController
函数参数未被使用,只需将其删除即可。注意区别,一个是字符串,另一个是参数名称。