Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Q要求(“尽快”)并以angularjs获取相关数据_Javascript_Angularjs_Require_Q - Fatal编程技术网

Javascript Q要求(“尽快”)并以angularjs获取相关数据

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的阶段,有人能帮助

我第一次在Angular.js中使用q.js,下面有一些代码,我试图获取外键的相关信息(每个团队对象都有一个链接到组对象的GroupId外键):

当我运行此代码时,会出现以下错误:

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.
        });

    }

}