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);
});
}}
是的,我很困惑,因爲'preguntas.texto'正在工作 /同樣的錯誤:( –
http是**異步**。因此,在您的視圖顯示的那一刻到http響應返回的時刻,preguntas就等於您初始化的值。推測是空的對象,否則preguntas.texto也會導致相同的異常。如果您發佈了所有相關代碼,則幫助起來會更容易。並將其作爲文本發佈,而不是作爲圖像的鏈接。 –
很多時候,如果你只需要等待你的http調用在視圖呈現之前(導致錯誤),你可以用'* ngIf =「preguntas && preguntas.respuestas && preguntas.respuestas [0]「',一旦該屬性存在就會顯示。 – StephenRios