Je ne sais pas si j'ai fait quelque chose de mal, mais le voici.
J'ai créé un composant avec certaines propriétés, toutes fonctionnant correctement dans le cadre de leur instance de composant. Cependant, lorsque j'ai ajouté une propriété avec une valeur de tableau, elle se comporte de manière inattendue : lorsqu'un élément est inséré dans le tableau d'un composant via @set , il est
Je suppose que vous avez quelque chose comme :
App.MyThingsComponent = Ember.Component.extend({
things: []
}):
Cela utilisera la même instance du tableau pour tous les composants car elle est évaluée lorsque la classe est définie, et non lorsqu'elle est instanciée.
Vous pouvez résoudre ce problème en instanciant le tableau lorsque le composant est initialisé :
App.MyThingsComponent = Ember.Component.extend({
things: null,
setupThings: function(){
this.set("things", []);
}.on("init")
}):
Vous obtiendrez maintenant une nouvelle instance de tableau pour chaque instance de composant et les choses devraient se comporter comme prévu.
hth
Merci beaucoup! Alors, est-ce un comportement intentionnel ? Comment se fait-il que ça ne marche pas comme ça avec des cordes par exemple ?
@Geokoumpa cela est dû à l'héritage prototypique de Javascript. Voici un article de blog complet de @wycats qui est utile pour en savoir plus sur cet aspect de Javascript.
http://yehudakatz.com/2011/08/12/understanding-prototypes-in-javascript/
Commentaire le plus utile
Je suppose que vous avez quelque chose comme :
Cela utilisera la même instance du tableau pour tous les composants car elle est évaluée lorsque la classe est définie, et non lorsqu'elle est instanciée.
Vous pouvez résoudre ce problème en instanciant le tableau lorsque le composant est initialisé :
Vous obtiendrez maintenant une nouvelle instance de tableau pour chaque instance de composant et les choses devraient se comporter comme prévu.
hth