1

Dans mon contrôleur je:angulaire 1/Jasmine/Karma - Non défini est pas un objet

$onInit() { 
    this.doShowInfoMsg() 
} 

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

Dans mon test unitaire (minimaliste):

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) 
     })) 
    }) 

Erreur:

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

mais quand je fais console.log (ctrl.realEstateProjectMotivation.realEstateProjectOnSales) j'ai mon tableau realEstateProjectOnSales qui est bien défini: LOG: [Object{id: 35, satisfied: true}]

D'où cette erreur provient-elle?

+0

'[Object {id: 35, satisfait: true}]' doit être juste '[{id: 35 , satisfait: vrai}] ', sans' Object'. –

+0

@CommercialSuicide Quelle est la différence? –

+0

Ma réponse courte est ci-dessous –

Répondre

1

[Object{id: 35, satisfied: true}] devrait être juste [{id: 35, satisfied: true}], sans Object. Object est un constructeur, vous essayez donc d'invoquer ce constructeur incorrectement. Regardez, avec la première structure, il jette une erreur.

Mauvaise façon:

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

chemin droit:

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

Pour plus d'informations sur le constructeur d'objets, que vous cherchait à utiliser: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object

+0

Je vois, mais pour mon cas comment est-ce fait? –

+0

@MouadEnnaciri, * "qui est bien défini:' LOG: [Object {id {35: satisfait: vrai}] '" *. Où est-ce défini? Je ne vois pas une telle ligne dans le code fourni –

1

Solution:

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

parce realEstateProjectMotivation visé real-estate-project-motivation="project.realEstateProjectMotivation"

+0

Vous avez trouvé la solution, cool! –