限制过滤结果?

时间:2014-06-04 12:58:40

标签: ember.js ember-data

我有一个拥有多条消息的游戏模型。为了让它们实时同步,我使用了这样的计算属性:

gameMessages: function () {
    var gameId, messages;
    gameId = this.get('id');

    return this.get('store').filter('message', function (message) {
        return (message.get('game.id') === gameId);
    });
}.property('messages'),

如何限制其返回的邮件数量?我只想展示最新的10个。

1 个答案:

答案 0 :(得分:3)

有十几种方法可以实现这一点,一种不会破坏过滤器的简单方法

gameMessages: function () {
    var gameId, messages, count = 0;
    gameId = this.get('id');


    return this.get('store').filter('message', function (message) {
        return (message.get('game.id') === gameId) && count++ < 10;
    });
}.property('id'),

您还可以创建一个返回10

的计算属性
gameMessages: function () {
    var gameId, messages;
    gameId = this.get('id');


    return this.get('store').filter('message', function (message) {
        return (message.get('game.id') === gameId);
    });
}.property('id'),

top10GameMessages: function(){
  return this.get('gameMessages').toArray().slice(0,1)
}.property('gameMessages.[]')

此外,我不确定为什么您的计算属性依赖于messages我没有看到CP中使用的任何属性名称messages