无法在 Angular 中注入 $q?
Can't inject $q in Angular?
大家。
我有一个非常奇怪的(对我来说)问题。我试图在我的一个控制器中注入 $q 库,当我尝试 console.log() 它时,它 returns "undefined"。我在我的一项服务中注入了同一个库,它在那里工作!让我告诉你:
服务:
(function() { 'use strict';
angular
.module('app.grid')
.factory('GridData', GridData);
GridData.$inject = ['$http', '$q'];
function GridData($http, $q) {
...
控制器(不工作):
(function() {
'use strict';
angular
.module('app.grid')
.controller('GridCtrl', GridCtrl);
GridCtrl.$inject = ['$log', '$scope', 'GridData', '$q'];
function GridCtrl($log, $scope, GridData, $rootScope, $q) {
console.log($q); // Returns "undefined"
...
我想知道你们以前是否遇到过同样的问题?这可能真的很愚蠢,一如既往,但由于某种原因我看不到它:(
干杯,
H
你的论点太多了:
GridCtrl.$inject = ['$log', '$scope', 'GridData', '$q'];
function GridCtrl($log, $scope, GridData, $rootScope, $q) {
// ^
}
您没有注射 $rootScope
。 $q
服务将在您的控制器中可用,它只会被 $rootScope
而不是 $q
引用。删除它,它应该工作!或者,将 '$rootScope
添加到依赖项数组。
您需要将 $rootScope 添加到 $inject 数组中:
GridCtrl.$inject = ['$log', '$scope', 'GridData', '$rootScope', '$q'];
如果不需要,也可以从参数列表中删除:
function GridCtrl($log, $scope, GridData, $q) {
大家。
我有一个非常奇怪的(对我来说)问题。我试图在我的一个控制器中注入 $q 库,当我尝试 console.log() 它时,它 returns "undefined"。我在我的一项服务中注入了同一个库,它在那里工作!让我告诉你:
服务:
(function() { 'use strict';
angular
.module('app.grid')
.factory('GridData', GridData);
GridData.$inject = ['$http', '$q'];
function GridData($http, $q) {
...
控制器(不工作):
(function() {
'use strict';
angular
.module('app.grid')
.controller('GridCtrl', GridCtrl);
GridCtrl.$inject = ['$log', '$scope', 'GridData', '$q'];
function GridCtrl($log, $scope, GridData, $rootScope, $q) {
console.log($q); // Returns "undefined"
...
我想知道你们以前是否遇到过同样的问题?这可能真的很愚蠢,一如既往,但由于某种原因我看不到它:(
干杯, H
你的论点太多了:
GridCtrl.$inject = ['$log', '$scope', 'GridData', '$q'];
function GridCtrl($log, $scope, GridData, $rootScope, $q) {
// ^
}
您没有注射 $rootScope
。 $q
服务将在您的控制器中可用,它只会被 $rootScope
而不是 $q
引用。删除它,它应该工作!或者,将 '$rootScope
添加到依赖项数组。
您需要将 $rootScope 添加到 $inject 数组中:
GridCtrl.$inject = ['$log', '$scope', 'GridData', '$rootScope', '$q'];
如果不需要,也可以从参数列表中删除:
function GridCtrl($log, $scope, GridData, $q) {