Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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 如何向AngularJS模型添加更多数据?_Javascript_Jquery_Ruby On Rails_Angularjs - Fatal编程技术网

Javascript 如何向AngularJS模型添加更多数据?

Javascript 如何向AngularJS模型添加更多数据?,javascript,jquery,ruby-on-rails,angularjs,Javascript,Jquery,Ruby On Rails,Angularjs,到目前为止,在我的Rails应用程序中设置AngularJS模型并在前端为其提供数据访问没有问题。我甚至使用$http将其设置为使用来自AJAX请求的数据填充。但是,我需要这个模型来包含多个$http调用的数据。以下是我目前掌握的代码: function DropboxCtrl($scope, $http) { var $infiniteLoader = $(".infiniteLoader"); var theUIDS = $infiniteLoader.attr('data-

到目前为止,在我的Rails应用程序中设置AngularJS模型并在前端为其提供数据访问没有问题。我甚至使用
$http
将其设置为使用来自AJAX请求的数据填充。但是,我需要这个模型来包含多个
$http
调用的数据。以下是我目前掌握的代码:

function DropboxCtrl($scope, $http) {
    var $infiniteLoader = $(".infiniteLoader");
    var theUIDS = $infiniteLoader.attr('data-dropbox-uids').split(',');

    if($infiniteLoader.attr('data-dropbox-uids') != "") {
        var theData = {};

        $.each(theUIDS, function(key) {
            $http({ url: '/dropbox/files/get', method: 'GET', params: { uid: theUIDS[key] }}).success(function(data) {
                theData = data;
            });
        });

        $scope.dropboxes = theData;
    }
}
我有一个名为
DropboxCtrl
的方法,它首先获取我需要调用GET请求的所有UID。我循环遍历它们,然后将
数据
附加到
数据
,后者是一个Javascript对象。每次测试后,我将Dropbox模型设置为数据的值。当前,我得到的方法完全没有返回任何内容,也没有Javascript错误。我确信我的url可以完全正常工作,而且实际上代码只在一个AJAX请求下工作,如下所示:

$.each(theUIDS, function(key) {
    $http({ url: '/dropbox/files/get', method: 'GET', params: { uid: theUIDS[key] }}).success(function(data) {
        $scope.dropboxes = data;
    });
});

然而。。。该代码块只返回最后一个AJAX调用,因为其他调用被覆盖。也许我缺少的只是不正确的Javascript,然而,也许我缺少的只是缺乏对事物“角度方式”的理解。我精通Javascript和jQuery,但对Angular非常陌生。有什么帮助吗?

AngularJs是一个高级Javascript框架。代码最终是javascript。在$each中,可以将结果推送到数组或初始化的集合,如

$scope.dropboxes = [{uid:1234}, {uid:2345}] and so on.
在$each中,找到uid记录并附加结果。 我通常使用下划线JS库对集合、数组等进行操作。 大概是

_.findWhere($scope.dropboxes, {uid: data.uid }).data = data;

假设返回的数据中包含uid。如果没有,那么应该有另一种方法将结果映射到请求。请注意,无法保证响应的顺序,因此不能使用数组索引映射结果。

AngularJs是一个高级Javascript框架。代码最终是javascript。在$each中,可以将结果推送到数组或初始化的集合,如

$scope.dropboxes = [{uid:1234}, {uid:2345}] and so on.
在$each中,找到uid记录并附加结果。 我通常使用下划线JS库对集合、数组等进行操作。 大概是

_.findWhere($scope.dropboxes, {uid: data.uid }).data = data;

假设返回的数据中包含uid。如果没有,那么应该有另一种方法将结果映射到请求。请注意,无法保证响应的顺序,因此您不能使用数组索引来映射结果。

请原谅我的无知,我对Angular有点陌生(从未使用下划线),您能给我介绍一下上下文吗?我不太明白你的回答。我想说的是,你需要将你的回答映射到适当的请求。因为您正在进行不止一个异步调用,并且响应的顺序不受保证,所以您必须找到一种方法将响应推回到集合中相应的请求项中。下划线只是一个javascript库,它提供有用的函数来查找、筛选集合和数组等。你真的不必使用它,它只是有效率的。重要的是要记住1。在进行任何调用之前,初始化将uid作为属性的对象集合。2.在上面的$each循环中,当您返回响应时,根据uid在该集合中找到该项,然后将响应附加回“data”属性中的该项。3.当你得到所有的响应后,你会有一个对象的集合,每个对象都有uid和数据作为两个属性。我会把你的答案记为正确的,但我应该让你知道我决定走另一条路。不过从技术上讲,你的答案很接近,我可以接受。谢谢请原谅我的无知,我对Angular有点陌生(从未使用下划线),你能给我一点背景吗?我不太明白你的回答。我想说的是,你需要将你的回答映射到适当的请求。因为您正在进行不止一个异步调用,并且响应的顺序不受保证,所以您必须找到一种方法将响应推回到集合中相应的请求项中。下划线只是一个javascript库,它提供有用的函数来查找、筛选集合和数组等。你真的不必使用它,它只是有效率的。重要的是要记住1。在进行任何调用之前,初始化将uid作为属性的对象集合。2.在上面的$each循环中,当您返回响应时,根据uid在该集合中找到该项,然后将响应附加回“data”属性中的该项。3.当你得到所有的响应后,你会有一个对象的集合,每个对象都有uid和数据作为两个属性。我会把你的答案记为正确的,但我应该让你知道我决定走另一条路。不过从技术上讲,你的答案很接近,我可以接受。谢谢