Javascript Q要求(“尽快”)并以angularjs获取相关数据
我第一次在Angular.js中使用q.js,下面有一些代码,我试图获取外键的相关信息(每个团队对象都有一个链接到组对象的GroupId外键): 当我运行此代码时,会出现以下错误:Javascript Q要求(“尽快”)并以angularjs获取相关数据,javascript,angularjs,require,q,Javascript,Angularjs,Require,Q,我第一次在Angular.js中使用q.js,下面有一些代码,我试图获取外键的相关信息(每个团队对象都有一个链接到组对象的GroupId外键): 当我运行此代码时,会出现以下错误: ReferenceError: require is not defined var asap = require("asap"); 我已经尝试添加require.js和asap.js,但是没有帮助,在这种情况下我需要做什么 此外,我还没有达到实际获取组信息并将其添加到$scope.teams的阶段,有人能帮助
ReferenceError: require is not defined
var asap = require("asap");
我已经尝试添加require.js和asap.js,但是没有帮助,在这种情况下我需要做什么
此外,我还没有达到实际获取组信息并将其添加到$scope.teams的阶段,有人能帮助我使用什么语法来执行此操作吗?您需要使用为web浏览器而构建的Q版本。在Github上签入的版本正在开发中且不稳定,因此请务必获取最新版本0.9.7。首先请参见上的“入门”,使用angular,您可能希望使用内置的promise服务,并将
$q
注入控制器/服务
第二,似乎您想解决函数中的一系列承诺,而$q就是解决的方法。例如:
function myCtrl($q, $scope) {
function getKey(groupId) {
// We create our own promise to return
var deferred = $q.defer();
$http.get('http://mycloudapp.cloudapp.net/odata/Groups(' + groupId + ')').then(function(group) {
// resolve the promise
deferred.resolve(group);
}, function getGroupError() { deferred.reject();
});
return defferred.promise;
}
new Team().$getAll().then(function (data)
{
promiseArray = [];
angular.forEach(data.value, function(value, key) {
var p = getKey(value);
promiseArray.push(p);
});
$q.all(promiseArray).then(function (data) {
// data will have an array of promises returned after all complete.
$scope.teams = data; // just depends exactly what you are doing.
});
}
}
我之前发布了一篇关于这个的文章,这可能会有所帮助 angular有自己的q实现。只需在控制器或服务中注入$q。否则,您只需插入一个指向q.js文件的常规HTML链接即可。谢谢,删除q.js并注入$q似乎可以防止出现错误消息。但是,我如何将组(从外键获得)添加到$scope.teams中呢?我将添加一个小提示作为答案。看起来您可能需要使用$q.all
function myCtrl($q, $scope) {
function getKey(groupId) {
// We create our own promise to return
var deferred = $q.defer();
$http.get('http://mycloudapp.cloudapp.net/odata/Groups(' + groupId + ')').then(function(group) {
// resolve the promise
deferred.resolve(group);
}, function getGroupError() { deferred.reject();
});
return defferred.promise;
}
new Team().$getAll().then(function (data)
{
promiseArray = [];
angular.forEach(data.value, function(value, key) {
var p = getKey(value);
promiseArray.push(p);
});
$q.all(promiseArray).then(function (data) {
// data will have an array of promises returned after all complete.
$scope.teams = data; // just depends exactly what you are doing.
});
}
}