1

Comment puis-je ajouter un comportement à mon affichage avec une variable en option? Dans mon cas, la variable que je veux utiliser est une option de la vue, mais, quand j'ai essayé ceci:Behavior Marionette: Ajouter des options dynamiques

behaviors: { 
    prodMessage: { 
     profile: this.options.userdata.attributes._userid 
    } 
}, 

Je reçois:

Uncaught TypeError: Cannot read property 'attributes' of undefined 

Je pense que c'est parce que ce lieu dans la construction plutôt que l'initilisation.

Alors, avez-vous une solution de contournement pour y parvenir?

Répondre

1

Le code dans votre version est exécuté pendant le chargement de l'application. Donc, this ne pointe pas réellement vers l'instance de vue, mais probablement vers l'objet window. Pour avoir this points à la vue, vous devez reporter la spécification des comportements, de sorte qu'il s'exécuté lorsque l'instance de vue est construite:

``

behaviors: function() { 
    return { 
    prodMessage: { 
     profile: this.options.userdata.attributes._userid 
    } 
    }; 
} 

``

Voir cette codepen pour la version complète.


Autre option est d'avoir le comportement accéder à la vue par this.view:

prodMessage = Marionette.Behavior.extend({ 
    onShow: function() { 
    alert(this.view.options.userdata.attributes._userid); 
    } 
}); 
+0

Je sais qu'il est bizarre, mais la première méthode ne fonctionne pas pour moi. des idées pourquoi serait-ce? – Emilios1995