0
votes

I'm trying to reload store data from the server after transitioning to a page.

The transition i'm referring in this case, is from an index page, to a specific page by id.

here is my code:

App.Board = DS.Model.extend({
    title: DS.attr('string'),
    boardItems: DS.hasMany('BoardItem'),
});

App.BoardItem = DS.Model.extend({
    title: DS.attr('string'),
    board: DS.belongsTo('Board')
});

App.BoardIndexRoute = Ember.Route.extend({
    model: function() {
        return {
            title: 'Boards List',
            boardItems: this.store.find('board')
        }
    }
});

App.BoardShowRoute = Ember.Route.extend({
    model: function(params) {
        // this.store.reloadRecord('BoardItem'); - tried this, didn't work :(
        var boardData = this.store.findById('board', params.board_id);

        return boardData;
    }
});

what happens is: Index - loads a list of boards, with empty boardItems array (I don't want to load all of the data on the index)

Then clicking a link to a specific board, transitions to it, but the data is empty and no requests made to the server.

I tried various ways of reloading it, but all fails...

here is the debug info if it might help:

DEBUG: Ember : 1.5.1 ember.js:3521

DEBUG: Ember Data : 1.0.0-beta.7.f87cba88 ember.js:3521

DEBUG: Handlebars : 1.1.2 ember.js:3521

DEBUG: jQuery : 2.1.0

Thanks!

1

1 Answers

0
votes

Finding Records: If you provide a number or string as the second argument to store.find(), Ember Data will attempt to retrieve a record of that with that ID. This will return a promise that fulfills with the requested record:

App.BoardShowRoute = Ember.Route.extend({
  model: function(params) {
    // Providing both the model name, and board identifier
    // Make sure the parameter exists.

    // console.debug('My board identifier is', params.board_id');

    return this.store.find('board', params.board_id); // => GET /boards/:board_id
  }
});