请求关于各个路线的附加数据 - ember

时间:2014-06-06 18:51:08

标签: ember.js ember-data

如果我有以下设置:

this.resource('books', function(){
    this.route('book', {path: '/:id'} )
})

App.Book = DS.Model.extend({
    title: attr('string'),
    year: attr('number'),

    pages: hasMany('page')
})

App.Page = DS.Model.extend({
    name: attr('string')
})
书籍路线JSON

"books": 
    [
        {
            "id": 23,
            "title": "the hunger games"
         },
         {
            "id": 67,
            "title": "lord of the rings"
         },
         {
            "id": 89,
            "title": "the hobbit"
         }
    ]

books/23 json

的示例
"book": {
    "id": 23,
    "title": "the hunger games",
    "year": 2008,

    "pages": [4, 5, 6]
}

App.BooksRoute = Ember.Route.extend({
    model: function(){
        return this.store.find('books')
    }
})
App.BooksBookRoute = Ember.Route.extend({
    model: function(params){
        return this.store.find('list', params.id)
    }
})

我试图在图书路线上有一个通用列表,这样它只显示标题和年份。在导航到books/:id时,我想强制路由请求剩余数据 - 即:年份,页面,最后是页面模型。

使用上述格式,在导航到特定图书路线(例如:/book/23)后,该路线只使用BooksRoute中定义的商店,并且不会对此进行新的请求个人书。这导致数据缺少年份和页面信息。 有什么方法可以强迫另一个请求吗?我是否必须自定义适配器?

1 个答案:

答案 0 :(得分:1)

您应该可以在模型上调用reload。请参阅此处的文档:http://emberjs.com/api/data/classes/DS.Model.html#method_reload

所以对你:

App.BooksBookRoute = Ember.Route.extend({
    model: function(params){
        return this.store.find('list', params.id).then(function (book) {
          return book.reload();
        }
    }
})