2015-05-22 3 views
0

У меня есть модель, которая запрашивает JSON-файл, как показано ниже:Итерация через атрибуты моделей в магистрали?

[ 
{ 
    "ModifiedOn": "2015-04-08 11:17:28.0", 
    "BuildingCode": "AU1010A1", 
    "BuildingName": "REGUS - BRISBANE", 
    "ActionRequired": "A" 
}, 
{ 
    "ModifiedOn": "2015-04-08 11:17:28.0", 
    "BuildingCode": "BR1044A1", 
    "BuildingName": "RIO SUL - RIO DE JANEIRO", 
    "ActionRequired": "A" 
}] 

В консоли можно увидеть атрибуты, как так

enter image description here

Однако, когда я пытаюсь получить доступ к модели атрибуты, как поэтому, я становлюсь неопределенным.

console.log(this.model.attributes.length); 

Я пробовал разобрать JSON, но это не удалось.

Нужно ли мне обращаться к каждому отдельному объекту в массиве атрибутов, который имеет моя модель?

+0

Я изменил свой подход к этому и использовал коллекцию построения моделей. – kaleeway

ответ

1

Вы можете использовать что-то подобное этому.

//for array[object{}, object{},...] 
for(var i = 0; i <data.length;i++) 
{ 
    foreach(var key in data[i]) 
    { 
     //print out the attributes for data[i]. 
     console.log(key); 
     //print out the attribute values. 
     console.log(data[i][key]); 
    } 
} 

[EDIT]

//for object{object{}, object{},...} 
foreach(var childObject in data) 
{ 
    foreach(var key in childObject) 
    { 
     //print out the attributes for childObject. 
     console.log(key); 
     //print out the attribute values. 
     console.log(childObject[key]); 
    } 
} 

Надеется, что это помогает.

+0

Хорошо, я пробовал это, но data.length дает значение 0. Таким образом, цикл никогда не выполняется. Поэтому мне нужно получить общее количество атрибутов, прежде чем я смогу их пропустить. – kaleeway

+0

Вы заменяете переменные данные? Вам необходимо передать или заменить переменную ** data ** для ответа сервера или всего, что содержит массив объектов. – janmvtrinidad

+0

Да, я понял, проблема в структуре выглядит так, когда я смотрю в консоли. 'object {object {}, object {}, object {}}' – kaleeway

1

Его объект, поэтому вы можете использовать Object.keys(this.model.attributes).

+0

Хорошо, я пробовал этот код и получил длину 'console.log (Object.keys (this.model.attributes) .length);' – kaleeway

+0

@loosebruce без дополнительного контекста, я не могу вам помочь. –

0

Вы можете использовать toJSON(), for in цикл для перебора атрибутов модели

var attrs = this.model.toJSON(); 
for(key in attrs){ 
    console.log((key + " -> " + attrs[key]);) 
} 
Смежные вопросы