Emberjs - 懒惰负载有很多关系

时间:2014-10-03 18:53:37

标签: ember.js ember-data

我设置了两个这样的模型:

App.Conversation = DS.Model.extend({
    header          : DS.attr('string'),
    created_at      : DS.attr('date'),
    entry           : DS.hasMany('Entry')
});


App.Entry = DS.Model.extend({
    body        : DS.attr('string'),
    conversation: DS.belongsTo('Conversation'),
    created_at  : DS.attr('date'),
});

这样的路线:

App.ConversationsRoute = Em.Route.extend({
    model: function() {
        return this.store.find('conversation');
    }
});


App.ConversationRoute = Em.Route.extend({
    model: function(params) {
        return this.store.find('conversation', params.id);
    }
})

和这样的对话控制器:

App.ConversationController = Em.ObjectController.extend({
    actions: {
        loadMore: function() {

        }
    },
    entries: function() {
        return this.get('entry');
    }.property('model.entry')
});

现在,我想做的只是为每个对话提供10个条目。这没有任何问题,我能够将所有与hasMany关系的对话检索到Entry。

但是,如果用户点击我的应用中的按钮,我希望稍后通过 loadMore 操作中的某些功能延迟更多相关条目。

如何实现这一目标?我真的无法解决如何加载更多条目并将它们同步到Conversation模型的问题。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

通过查询查找手动获取10条记录,然后使用pushObjects将它们推送到条目集合中。

var entryCol = this.get('entry');
store.find('entry', {skip:10}).then(function (col){
   entryCol.pushObjects(col);
});

像这样的东西(对不起电话)