1

In meinem Controller habe ich:Angular 1/Jasmin/Karma - undefiniert ist kein Objekt

$onInit() { 
    this.doShowInfoMsg() 
} 

doShowInfoMsg() { 
    return this.checkProjectOnSalesLength = this.realEstateProjectMotivation.realEstateProjectOnSales.length < 1 
} 

In meiner Unit-Test (minimalistisch):

describe('iadMyIadProjectMotivationsHowSaleCurrentCapitalDetail',() => { 
     let scope 
     let compile 
     let element 
     let ctrl 

     beforeEach(() => { 
     angular.mock.module('projectMotivationsHowSaleCurrentCapitalModule') 
     }) 

     beforeEach(inject(($componentController) => { 
     let bindings = { 
      realEstateProjectMotivation: { 
      realEstateProjectOnSales: [ 
       { 
       id: 35, 
       satisfied: true 
       } 
      ] 
      } 
     ctrl = $componentController('projectMotivationsHowSaleCurrentCapitalDetail', null, bindings) 
     })) 
    }) 

Fehler:

TypeError: undefined is not an object (evaluating 'this.realEstateProjectMotivation.realEstateProjectOnSales') 

aber wenn ich mache console.log (ctrl.realEstateProjectMotivation.realEstateProjectOnSales) Ich habe meine Array realEstateProjectOnSales, die gut definiert ist: LOG: [Object{id: 35, satisfied: true}]

Woher kann dieser Fehler kommen?

+0

'[Objekt {id: 35, erfüllt ist: true}]' sollte nur 'sein [{id: 35 , zufrieden: wahr}] ', ohne' Objekt'. –

+0

@CommercialSuicide Was ist der Unterschied? –

+0

Meine kurze Antwort ist unter –

Antwort

1

sollte nur [{id: 35, satisfied: true}] sein, ohne Object. Object ist ein Konstruktor, also versuchen Sie, diesen Konstruktor falsch aufzurufen. Schau, mit der ersten Struktur gibt es einen Fehler.

Falsche Richtung:

var foo = [Object{id: 35, satisfied: true}]; 
 
console.log(foo);

Richtigen Weg:

var foo = [{id: 35, satisfied: true}]; 
 
console.log(foo);

Für weitere Informationen über das Objekt Konstruktor, die Sie zu verwenden versuchte: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object

+0

Ich sehe, aber für meinen Fall, wie ist es gemacht? –

+0

@MouadEnnaciri, * "das ist gut definiert:' LOG: [Objekt {ID: 35, erfüllt: wahr}] '" *. Wo ist es definiert? Ich sehe keine solche Zeile in dem bereitgestellten Code –

1

Lösung:

scope.project = { 
    realEstateProjectMotivation: { 
    realEstateProjectOnSales: [ 
     { 
     id: 35, 
     satisfied: true 
     } 
    ] 
    } 
} 

weil realEstateProjectMotivation-real-estate-project-motivation="project.realEstateProjectMotivation" bezeichnet

+0

Sie fanden die Lösung, cool! –

Verwandte Themen