samedi 2 janvier 2016

Ember Route with renderTemplate and two render calls overrides original model

I have an outlet in application.hbs called 'sidebar'. This outlet is used in some routes to render additional info using a component called 'sidebar-info'. In those routes I use renderTemplate to render stuff in the appropriate outlets. For example:

renderTemplate: function(controller, model) {
    this.render('components/sidebar-info', {
        into: 'application',
        outlet: 'sidebar',
        model: Ember.Object.create({
            title: this.get('i18n').t('signup'),
            detailsComponent: 'signup-help'
        })
    });
    this.render('sign-up');
},

This is components/sidebar-info template:

<div class="title">
    <h1>{{model.title}}</h1>
</div>
{{#if model.detailsComponent}}
<div class="details">
    {{component model.detailsComponent}}
</div>
{{/if}}

When the route template (not the component one) is being rendered, the model defined by the route is overwritten by the model sent to the component. If the original model was something like this:

original_model = {
   field_1: 1,
   field_2: 2
}

Then using model.field_1 becomes undefined in the context of the template while model.title is available.

Why is the model being overwritten?


I am using Ember 2.2.0




Aucun commentaire:

Enregistrer un commentaire