mercredi 17 juin 2015

ember model rendering strange behaviuor

While experimenting with ember and ember-localforage-adapter I noticed a strange behaviour.

ember.debug.js:4888DEBUG: Ember      : 1.12.0
ember.debug.js:4888DEBUG: Ember Data : 1.0.0-beta.18
ember.debug.js:4888DEBUG: jQuery     : 1.11.3

I have three models:

/app/models/ledger.js

import DS from 'ember-data';

export default DS.Model.extend({
  title: DS.attr('string'),

  purchases: DS.hasMany('purchase', {async: true}),
  players: DS.hasMany('player', {async: true}),
});

/app/models/purchase.js

import DS from 'ember-data';

export default DS.Model.extend({
  name: DS.attr('string'),
  amount: DS.attr('number'),

  ledger: DS.belongsTo('ledger', {async: true}),
  player: DS.belongsTo('player', {async: true})
});

/app/models/player.js

import DS from 'ember-data';

export default DS.Model.extend({
  name: DS.attr('string'),
  balance: DS.attr('number'),

  ledger: DS.belongsTo({ async: true }),
  purchases: DS.hasMany('purchase', {async: true}),
});

and a simple route:

/app/routes/purchase.js

import Ember from 'ember';

export default Ember.Route.extend({
  model: function(params) {
    return this.store.find('purchase', params.purchase_id);
  }
});

My experimental template is

/app/templates/purchase.hbs

name: {{model.name}}
<br>
amount: {{model.amount}}
<br>
player: {{model.player.name}}

and it works showing me all invoked attributes. But if I add another line like

name: {{model.name}}
<br>
amount: {{model.amount}}
<br>
player: {{model.player.name}}
<br>
ledger: {{model.player.ledger.title}}

it shows the name of the player for just an instant and never shows the ledger title. How should load in the store the requested record to have them available in my template?




Aucun commentaire:

Enregistrer un commentaire