2017-09-22 3 views
0

Mein Ziel Eigenschaften ist einzustellen, wie Name, versteckt und no_parent dynamisch festgelegt, aber es hält mich geben:Kann nicht eine Eigenschaft dynamisch in einem Objekt

TypeError: Cannot set property 'name' of undefined

Auch wenn ich scorcroot initialisiert, bevor es durch Parameter. Hier

ist der Code:

adattamento: function(data) { 
    var continua = true; 
    var scorcfat = this.famiglia; 
    var scorcroot = {}; 
    this.controlloprimi(scorcroot, scorcfat); 
    this.root = scorcroot; 
    console.log("hey!") 
    console.log(this.root); 
    }, 
    controlloprimi: function(scorcroot, scorcfat) { 
    scorcroot.name = scorcfat.name; 
    scorcroot.hidden = false; 
    scorcroot.no_parent = true; 

    if (scorcfat.father != null) { 
     if (scorcfat.mother != null) { 
     scorcroot.children = [{}, {}, {}]; 
     this.controlloprimi(scorcroot.children[1], scorcfat.father); 
     scorcroot.children[2].name = ""; 
     scorcroot.children[2].hidden = true; 
     scorcroot.children[2].no_parent = false; 
     this.controlloprimi(scorcroot.children[3], scorcfat.mother) 
     } else { 
     scorcroot.children = [{}] 
     this.controlloprimi(scorcroot.children[1], scorcfat.father); 
     } 
    } 

    if (scorcfat.mother != null) { 
     scorcroot.children = [{}, {}]; 
     this.controlloprimi(scorcroot.children[1], scorcfat.mother); 
    } 
    }, 
+0

Stellen Sie sicher, 'scorcroot.children [2 ] 'ist nicht' undefiniert'. Nur ein Zeiger, index in JS startet von 0 und nicht 1 – Rajesh

+0

Ja, das Problem sind die Zahlen ... Vielen Dank – ImFireblade

Antwort

0

scorcroot.children[3] ist kein Objekt, wie Sie die scorcroot.children Array mit 3 Objekte nur initialisiert. So scorcroot.children [3] ist undefined und Sie setzen Eigenschaft auf undefined.

+0

Vielen Dank – ImFireblade

+0

Hallo @ImFireblade bitte lassen Sie mich wissen, ob dies für Sie funktioniert oder nicht und die Antwort akzeptieren, wenn es funktioniert –

+0

Es funktioniert, danke! – ImFireblade

0

Ihr Problem scheint diese Linie

this.controlloprimi(scorcroot.children[3],scorcfat.mother) 

, da Sie nur 3 Artikel in dieser Feldinitialisierung

scorcroot.children=[{},{},{}]; 
gegeben zu sein

es bedeutet scorcroot.children[3]undefined

Nicht sicher Zweck ist von diesem Code, so würde ich einfach vorschlagen, es 4 Artikel anstelle von 3

machen
scorcroot.children=[{},{},{},{}]; 
+0

Omg so dumm ahaha ... Vielen Dank – ImFireblade

0

Das Problem war die falsche Aufzählung der Arrays .. Also ich eine Reihe von 3-Objekte erstellt und von Array aufrufen [3] i wurde die 4. undefiniert Objekt aufrufen

Verwandte Themen