gpt4 book ai didi

ember.js - 操作 RecordArray

转载 作者:行者123 更新时间:2023-12-01 12:46:48 30 4
gpt4 key购买 nike

我有一个从 App.ModelName.find() 返回的 RecordArray。

我想用它做一些事情,比如:

  • 对内的记录集进行分页
  • 将来自另一个 findQuery 的记录添加到数组中

我可能会感到困惑,但似乎很难(或至少没有记录)如何处理从 find()/findAll()/findQuery() 返回的记录,而不是循环遍历集合并显示他们像往常一样。

从 all() 返回的数组使这变得更加复杂,这似乎更接近恒等映射。

这一切可能都不可能,但如果不可能,我可以提出问题并开始自己解决。

最佳答案

Ember Data 返回的 RecordArray 并非真正用于修改。特别是,Model.find()(无参数)和 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 属性。

关于分页,你可以试试a simple mixin approach ,或更详尽的 rails-based solution .

关于ember.js - 操作 RecordArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15102668/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com