AngularJS $inject 服务注入错误
AngularJS $inject error in service injection
我是 Angular 的新手,如果你能帮助我,我会很高兴。
我将我的逻辑拆分为 2 个文件(控制器和服务)。
我的服务代码:
(function () {
'use strict';
angular
.module('app', [])
.factory('authservice', authservice);
authservice.$inject = ['$http', '$logger'];
function authservice($http, $logger) {
return {
signInOwner: signInOwner,
signUpOwner: signUpOwner
};
function signInOwner(owner) {
}
function signUpOwner(owner) {
}
};
})();
我的控制器代码:
(function () {
'use strict';
angular
.module('app', [])
.controller('SignUpController', SignUpController);
SignUpController.$inject = ['authservice'];
function SignUpController (authservice) {
var vm = this;
}
})();
我在 controller.js 之前包含了我的 services.js,但仍然出现有关错误的 authservice 依赖项的错误
angular.js:14362 Error: [$injector:unpr]
你能帮帮我吗?
使用此语法 angular.module('app', [])
,您正在覆盖 模块创建。
您应该使用 angular.module('app')
来检索它。
[]
应该只使用一次:在创建模块时。
Beware that using angular.module('myModule', [])
will create the
module myModule
and overwrite any existing module named myModule
. Use
angular.module('myModule')
to retrieve an existing module.
在您的控制器代码中替换:
angular
.module('app', [])
.controller('SignUpController', SignUpController);
对于
angular
.module('app') // notice the lack of [] here!!
.controller('SignUpController', SignUpController);
这是因为使用 []
意味着您正在创建模块,没有它意味着您正在定位模块。由于该模块是在您创建服务时创建的,因此您无需再次创建它,只需找到它即可。
我是 Angular 的新手,如果你能帮助我,我会很高兴。 我将我的逻辑拆分为 2 个文件(控制器和服务)。 我的服务代码:
(function () {
'use strict';
angular
.module('app', [])
.factory('authservice', authservice);
authservice.$inject = ['$http', '$logger'];
function authservice($http, $logger) {
return {
signInOwner: signInOwner,
signUpOwner: signUpOwner
};
function signInOwner(owner) {
}
function signUpOwner(owner) {
}
};
})();
我的控制器代码:
(function () {
'use strict';
angular
.module('app', [])
.controller('SignUpController', SignUpController);
SignUpController.$inject = ['authservice'];
function SignUpController (authservice) {
var vm = this;
}
})();
我在 controller.js 之前包含了我的 services.js,但仍然出现有关错误的 authservice 依赖项的错误
angular.js:14362 Error: [$injector:unpr]
你能帮帮我吗?
使用此语法 angular.module('app', [])
,您正在覆盖 模块创建。
您应该使用 angular.module('app')
来检索它。
[]
应该只使用一次:在创建模块时。
Beware that using
angular.module('myModule', [])
will create the modulemyModule
and overwrite any existing module namedmyModule
. Useangular.module('myModule')
to retrieve an existing module.
在您的控制器代码中替换:
angular
.module('app', [])
.controller('SignUpController', SignUpController);
对于
angular
.module('app') // notice the lack of [] here!!
.controller('SignUpController', SignUpController);
这是因为使用 []
意味着您正在创建模块,没有它意味着您正在定位模块。由于该模块是在您创建服务时创建的,因此您无需再次创建它,只需找到它即可。