javascript - 如何将更多数据附加到 AngularJS 模型?

标签 javascript jquery ruby-on-rails angularjs

到目前为止,我在 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。我循环遍历它们中的每一个,然后将 data 附加到 theData (这是一个 Javascript 对象)。在每个之后,我使我的保管箱模型等于 theData 的值。目前我的方法绝对没有返回任何内容,也没有 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,但是,也许我所缺少的只是缺乏对事物“Angular 方式”的理解。我精通 Javascript 和 jQuery,但对 Angular 还很陌生。有什么帮助吗?

最佳答案

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

$scope.dropboxes = [{uid:1234}, {uid:2345}] and so on.

在 $each 中,找到 uid 的记录并附加结果。 我通常使用 underscorejs 库来对集合、数组等进行操作。 所以类似

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

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

关于javascript - 如何将更多数据附加到 AngularJS 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16023593/

相关文章:

添加 json 编码时 JavaScript 代码出现故障

javascript - 禁用 jQuery Draggable 的自动高度

javascript - 与用户一起使用 js 警报是否不受欢迎

ruby-on-rails - rails : Is there away to get the Date object that is the closest Monday to today?

ruby-on-rails - 使用 RSpec 和不同的路由名称测试 Ruby-on-Rails Controller

javascript - 如果段落不包含任何文本,则隐藏一个 div

javascript - Cordova - 用于“保持”录制音频的按钮 - 有时会停止

ruby-on-rails - 如何在管理中设置 ActionText (Rails 6.1)

JavaScript 头文件有必要吗?

javascript - 如何将innerHTML添加到现有属性