2017-07-01 117 views
0

我想表現出我的角項目視圖數組如何訪問JSON ANGULAR中的數組?

Items.json

{ 
    "tipo": "texto", 
    "texto": "Un colegio necesita enviar 5 estudiantes como representantes a un foro sobre la contaminación del medio ambiente. Se decidió que 2 estudiantes sean de grado décimo y 3 de grado undécimo. En décimo hay 5 estudiantes preparados para el foro y en undécimo hay 4. ¿Cuántos grupos diferentes pueden formarse para enviar al foro?", 
    "respuestas": [ 
    "9", 
    "14", 
    "20", 
    "40" 
    ] 
} 

TS:

let timeoutMS = 10000; 
this.http.get(assets/Items.json) 
    .timeout(timeoutMS) 
    .map(res => res.json()).subscribe(data => { 
     let responseData = data; 

     this.preguntas = responseData; 
     console.log(this.preguntas); 

    }, 
    err => { 
     console.log(err); 
    }); 

console.log() displays the JSON correctly respuestas是一個數組,所以它是確定

In the view 我得到preguntas.texto = "Un colegio necesita enviar 5 estudiantes..."preguntas.respuestas = 9,14,20,40。如果我試圖得到preguntas.respuestas [0]我有這個錯誤「TypeError:無法讀取未定義TypeError的屬性'0':無法讀取Object.eval [as updateRenderer]未定義的屬性'0'.. 。「

我在做什麼錯?

感謝您的閱讀! :d

編輯:

import { Facebook, FacebookLoginResponse } from '@ionic-native/facebook'; 
import { Component } from '@angular/core'; 
import { NavController } from 'ionic-angular'; 
import { LoginPage } from '../login/login'; 

import { Http } from '@angular/http'; 
import 'rxjs/add/operator/map'; 
import 'rxjs/add/operator/timeout'; 

@Component({ 
    selector: 'page-pregunta', 
    templateUrl: 'pregunta.html' 
}) 
export class PreguntaPage { 
    userData = null; 
    preguntas = {}; 
constructor(private facebook:Facebook , public http: Http) { 
    } 

ionViewDidLoad() { 
    let path = 'assets/Items.json'; 
    let encodedPath = encodeURI(path); 
    let timeoutMS = 10000; 

    this.http.get(encodedPath) 
    .timeout(timeoutMS) 
    .map(res => res.json()).subscribe(data => { 
let responseData = data; 

this.preguntas = responseData; 
    console.log(this.preguntas); 
}, 
err => { 
    console.log('error!!', err); 
}); 
}} 
+0

是的,我很困惑,因爲'preguntas.texto'正在工作 /同樣的錯誤:( –

+3

http是**異步**。因此,在您的視圖顯示的那一刻到http響應返回的時刻,preguntas就等於您初始化的值。推測是空的對象,否則preguntas.texto也會導致相同的異常。如果您發佈了所有相關代碼,則幫助起來會更容易。並將其作爲文本發佈,而不是作爲圖像的鏈接。 –

+0

很多時候,如果你只需要等待你的http調用在視圖呈現之前(導致錯誤),你可以用'* ngIf =「preguntas && preguntas.respuestas && preguntas.respuestas [0]「',一旦該屬性存在就會顯示。 – StephenRios

回答

0

你應該嘗試這樣的事:

let respuestas = [] 
... 
responseData.respuestas.map(item => respuestas.push(item)). 

,然後嘗試這樣的事:

console.log(respuestas[0])