0

我是 JS 初学者,最近在使用 ember.js 进行 ui 开发时遇到了一个我无法解决的问题。我正在尝试减少帖子的数量以将它们放在一页上。简单地在 this.get('store').find() 的返回值上调用 slice 方法是行不通的。我也尝试修剪所有函数的返回值内容,但仍然没有成功。有任何想法吗?

4

2 回答 2

0

如果你真的在 this.get('store').find 的返回值上调用 slice,你会遇到麻烦。find 函数返回一个promise,你需要promise 解析的结果。

您可以通过以下两种方式之一解决此问题:

如果您使用标准 Ember 模式加载模型,则应该在路由中定义模型函数。这实际上会等到结果得到解决,在你的控制器中你可以在 this.get('content') 上调用 slice

如果您在控制器中加载数据,则需要如下所示:

c = this
this.store.find('myModel').then(function(result) {
    c.set('paginatedContent', result.slice(0, 10));
});

在这里,我们等待 find 返回的 promise 解析为结果,然后再根据该结果设置分页内容。

于 2013-11-05T23:35:00.687 回答
0

您可以使用以下内容:

App.YourController = Ember.ArrayController.extend({
    arrangedContent: function() {        
        return this.get('content').slice(0 , 10);
    }.property('content')
});

YourController属于您的路线的控制器在哪里。所以内容将是来自的已解决承诺this.store.find('modelName')。该arrangedContent属性是您想要执行过滤、排序等时修改内容的地方。无需直接更改内容并保留所有数据。

看看那个样本http://jsfiddle.net/marciojunior/pwQ5b/

于 2013-11-05T23:31:49.950 回答