2017-08-31 1 views
0

ich eine Funktion habe, die mehrere JSON-Objekte in einem Array vom Typ „Kontakt“Typoskript Array ist nicht definiert

getContacts(){ 
    let self = this; 
    $.ajax({ 
     type: "GET", 
     url: "/chat/contacts/", 
     dataType:"json", 
     success: function(response){ 
      let obj = response; 
      let i = 1; 
      let contacts: Contact[] = []; 
      for (let key in obj) { 
       if (obj.hasOwnProperty(key)) { 
        let val = obj[key]; 
        contacts[i].id = val["id"]; //<-- contacts[i] is undefinded 
        contacts[i].partner = val["partnerId"]; 
        contacts[i].name = val["name"]; 
        contacts[i].type = val["type"]; 
        console.log(contacts[i]); 
       } 
      } 
     }, 
     error: function(jqXHR, textStatus, errorThrown){ 
      alert(errorThrown); 
     } 
    }); 
} 

an der markierten Stelle speichern sollte es sagt

Kontakte [i] undefined

Wie muss ich das Array initialisieren, damit es funktioniert? Hier

ist die Kontakt Klasse:

class Contact extends BaseModel{ 
    static CCO_ID = "id"; 
    static CCO_PARTNER = "partner"; 
    static CCO_NAME = "name"; 
    static CCO_TYPE = "type"; 


    partner: Number; 
    name: String; 
    type: Number; 
} 
+0

verwenden contacts.push – N1gthm4r3

Antwort

3

Sie müssen zuerst definieren, dass contacts[i] ein Objekt und verwenden Sie dann es ist Eigenschaften.

Und noch eine Sache, Sie beginnen mit Index 1, in Javascript Array-Index ist ab 0. Seien Sie sich bewusst, wenn das nicht absichtlich ist.

let val = obj[key]; 
contacts[i] = new Contact(); // <-- Look here 
contacts[i].id = val["id"]; 
contacts[i].partner = val["partnerId"]; 
contacts[i].name = val["name"]; 
contacts[i].type = val["type"]; 
console.log(contacts[i]); 
+0

Ah danke das hat funktioniert! ^^ – Tim

Verwandte Themen