大家。
这里有一个非常奇怪的(对我来说)问题。我试图在我的一个控制器中注入$ q lib,当我尝试console.log()时,它返回" 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"
...
我想知道你们之前是否有人遇到过同样的问题?它可能是一种真正的愚蠢,就像它一直如此,但由于某种原因我无法看到它:(
干杯, ħ
答案 0 :(得分:4)
您需要将$ rootScope添加到$ inject数组:
list<A*> l;
cin >> dummy;
// The list will allocate space to hold the pointers:
l.resize (90000);
cin >> dummy;
// Allocate instances for each pointer in the list
for (auto & ptr : l) {
ptr = new A{};
}
cin >> dummy;
// Free the allocated instances
for (auto & ptr : l) {
delete ptr;
}
cin >> dummy;
// Erase all elements from the list.
// Note that this is not necessary, when
// the list goes out of scope at the end
// of main this is done by the list destructor.
// Moreover, there's a function to erase
// all elements from the list:
// l.clear();
auto it = l.begin();
while (it != l.end()) {
it = l.erase(it);
}
cin >> dummy;
如果不需要,请将其从参数列表中删除:
GridCtrl.$inject = ['$log', '$scope', 'GridData', '$rootScope', '$q'];
答案 1 :(得分:3)
你有太多的论点:
GridCtrl.$inject = ['$log', '$scope', 'GridData', '$q'];
function GridCtrl($log, $scope, GridData, $rootScope, $q) {
// ^
}
你没有注射$rootScope
。 $q
服务将在您的控制器中提供,它将由$rootScope
而不是$q
引用。删除它,它应该工作!或者,将'$rootScope
添加到依赖关系数组。