我有一个从 App.ModelName.find() 返回的 RecordArray。
我想用它做一些事情,比如:
- 对内的记录集进行分页
- 将另一个 findQuery 中的记录添加到数组中
我可能会感到困惑,但似乎很难(或至少没有记录)如何处理从 find()/findAll()/findQuery() 返回的记录,而不是循环遍历集合并正常显示它们.
从 all() 返回的数组使这更加复杂,这似乎更接近于一个恒等映射,也许。
这一切都不可能,但如果不是,我可以打开问题并自己开始处理。
我有一个从 App.ModelName.find() 返回的 RecordArray。
我想用它做一些事情,比如:
我可能会感到困惑,但似乎很难(或至少没有记录)如何处理从 find()/findAll()/findQuery() 返回的记录,而不是循环遍历集合并正常显示它们.
从 all() 返回的数组使这更加复杂,这似乎更接近于一个恒等映射,也许。
这一切都不可能,但如果不是,我可以打开问题并自己开始处理。
Ember Data 返回的RecordArray
s 并不真正用于修改。特别是,Model.find()
(sans-argument) 并Model.all()
返回随着新匹配记录可用而不断更新的实时数组。
如果要操作模型数组,最好使用Model.find({})
(参数使其使用findQuery()
)并观察isLoaded
属性。像这样的东西:
query: null,
init: function() {
// should really do this in the route
this.set('query', Model.find({}));
},
content: function() {
var query = this.get('query');
return query && query.get('isLoaded') ? query.toArray() : [];
}.property('query.isLoaded')
现在 content 返回一个普通的旧数组,您可以随心所欲地使用它(尽管您仍然需要等待记录加载才能开始修改数组)。
如果问题是您希望查询不断更新,请考虑使用Model.filter()
,它返回一个类似于 的实时数组find()
,但接受匹配函数。请注意,令人困惑但有意为之的是find()
,all()
, 和filter()
都没有isLoaded
属性。
至于分页,你可以尝试一个简单的 mixin 方法,或者更复杂的基于 rails 的解决方案。