我有一个从App.ModelName.find()返回的RecordArray。
我想用它做一些事情,比如:
我可能感到困惑,但似乎很难(或至少没有记录)如何处理从find()/ findAll()/ findQuery()返回的记录,而不是循环遍历集和显示他们正常。
从all()返回的数组更加复杂,可能更接近身份映射。
这一切都不可能,但如果不是,我可以打开问题并开始自己解决。
答案 0 :(得分:4)
Ember Data返回的RecordArray
并不是真正意义上的修改。特别是,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')
现在内容返回一个普通的旧数组,你可以使用它(虽然你仍然需要等待记录加载才能开始修改数组)。
如果问题是您希望查询继续更新,请考虑使用Model.filter()
,它返回像find()
这样的实时数组,但接受匹配的函数。请注意,令人困惑的是,find()
,all()
和filter()
都没有isLoaded
属性。
至于分页,您可以尝试a simple mixin approach,或更精细的rails-based solution。