javascript - 通过对象数组的 Angular 循环

标签 javascript arrays angularjs

我有以下函数,它在 models 中创建了一个对象数组,但是当我开始在应用程序中进一步使用 models 时,我无法循环遍历它内容来提取数据。

到目前为止,我尝试过的每个循环方法都包含一个 console.log() 消息,当 models > 将包含两个 对象,因此我认为问题实际上出在模型 的创建上。如果我创建一个 promise 并在它完成处理时打印出 models.devices 的值,则会返回一个空数组。

有什么想法吗?

var d = devices.split(','),
    count = 0,
    models = {devices:[]};

angular.forEach(d, function (device, i) {

    var index = i;

    if (index <= 1) {

        var deviceName = device.replace(/ /g,"+").toLowerCase(),
            req = '?__url_path_param=' + deviceName;

        $http
            .get('/api/cheapest_by_name' + req)
            .success(function (obj) {
                models.devices.push(obj.device);
                count++;
            });

    }

});

$q.all(models).then(function (data) {
    apiDeal.multi(data, 3, 2);
});

然后...(在 api-deal.factory.js 中)

function apiDeal($http, $rootScope) {

    return {

        multi: function (devices, limit, type) {

            console.log(devices); // equal to below image
            console.log(devices.devices); // equal to '[]'

        }

    }

}

console.log(devices)

然后我需要遍历 apiDeal.multi 中的 devices

最佳答案

您需要保留一系列 promise ,这些 promise 应该替换您正在使用 $q.allmodels。它必须是一系列 promise 。

所以把你的代码改成这样:

var d = devices.split(','),
    count = 0,
    models = {devices:[]},
    promises = [];

var promise = $http
            .get('/api/cheapest_by_name' + req)
            .success(function (obj) {
                models.devices.push(obj.device);
                count++;
            });

promises.push(promise);

然后,做:

$q.all(promises).then(function (data) {
    apiDeal.multi(data, 3, 2);
});

Simple Fiddle demonstration

关于javascript - 通过对象数组的 Angular 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30277597/

相关文章:

javascript - 面向对象,javascript中的继承无法调用外部方法

javascript - 如何创建 CKEditor 插件来支持编辑器实例中的拖放操作?

javascript - 模块 'App' 不可用!你要么拼错了模块名称,要么忘记在 AngularJS 中加载它

javascript - React.js : can't get an property in an array of objects in render() function

ajax - 带有正文的 Angular $http.delete 请求

arrays - 在无限排序数组中找到一个元素

arrays - 如何在 Bash 中将字符串拆分为数组?

java - 如何从 main() 访问字符串数组的元素

javascript - 在 Angular 2 中访问 DOM 属性

javascript - 用户界面路由器 : async data in templateUrl function