我正在根据Google标准编写我的代码...甚至不确定这个语法是什么,但它与控制器的Angular-UI示例代码不同,我得到$ modalInstance的注入器错误:(
var myControllers = angular.module('myControllers', ['ngCookies','ui.bootstrap']);
myApp.controller('LoginDialogCtrl', ['$scope', '$modalInstance', 'Auth', function($scope, $modalInstance, Auth) {
$scope.login = function() {
// Close dialog
$modalInstance.dismiss('Logged in');
};
}]);
myApp.controller('AuthCtrl', ['$scope', '$modal', 'Auth', function($scope, $modal, Auth) {
$scope.openLoginDialog = function () {
var modalInstance = $modal.open({
templateUrl: 'partials/auth/login.html',
controller: myApp.LoginDialogCtrl,
}
});
};
...
}]);
该对话框打开正常,但在用户登录后,我收到此行的注入错误:
myApp.controller('LoginDialogCtrl', ['$scope', '$modalInstance', 'Auth', function($scope, $modalInstance, Auth) {
我已经像这样测试了它似乎工作真的很烦人:
var ModalInstanceCtrl = function ($scope, $modalInstance) {
$scope.ok = function () {
$modalInstance.close();
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
};
是否与我的控制器初始化方式有关,在初始化时它不知道$ modalInstance?我如何使这项工作?
答案 0 :(得分:2)
请参阅此答案:AngularJS inject issue with Angular Bootstrap modal
我遇到了和你一样的问题。我在partial中有一个ng-controller指令。删除后,问题就消失了。
答案 1 :(得分:1)
有两件事引起我的注意。
您可以在控制器属性中使用 ModalInstanceCtrl 变量,因为它是一个函数。但是,如果您注册控制器,则无法使用 myApp.LoginDialogCtrl 。而是使用其名称“ LoginDialogCtrl ”。 像这样:
controller: 'LoginDialogCtrl'