簡體   English   中英

角度遍歷對象數組

[英]Angular loop through object array

我具有以下在models內部創建對象數組的函數,但是當我進一步在應用程序中使用models時,無法循環瀏覽其內容以提取數據。

到目前為止,我嘗試過的每個循環方法都包含一個console.log()消息,當models包含兩個對象時,該消息只會打印出一次消息,因此我認為問題實際上出在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(裝置)

然后,我需要遍歷apiDeal.multi devices

您需要保留一個諾言數組,該諾言應替換您使用$q.allmodels 它必須是一系列的承諾。

因此,將您的代碼更改為此:

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

簡單的小提琴示范

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM