我是新成员,通过构建一个小模块来探索它的功能。我遇到了一个需要同步更新ember模型内容的场景。ember数据模型包含一个对象数组作为内容。
我希望执行以下几个任务
- 执行数组内容重新排序-为了简单起见,我们可以假设交换第一项和最后一项。
- 在没有网络呼叫的情况下附加记录
- 删除记录而不进行网络呼叫。
这样做应该会自动同步数据绑定/计算属性
peekAll调用后的数据模型包含10条记录(如下所示),我需要对这些记录执行上述操作。
我的模型如下所示
export default Model.extend({
testId: attr('number'),
name: attr('string')
});
更新内容记录的正确方法是什么?有人能建议如何进行吗?
1条答案
按热度按时间xqkwcwgp1#
在我看来,这就像运行
let arr = await store.findAll('test-model')
这样的程序的结果,对吗?这可能是一个PromiseArray,您可以通过对其调用arr.slice()
来作为Javascript数组访问数据。这将允许您执行正常的数组操作,尽管在这种情况下执行内容重新排序并没有多大意义。我想你是以它为例。要在没有网络调用的情况下添加和删除记录,您可以返回存储区,这是what is covered in the docs,不需要对您正在查看的这个对象进行操作。
添加新记录:
删除记录:
一旦您在存储上采取了类似的操作,您在上面发布的数据结构*可能会更新为包含新数据,具体取决于您最初的访问方式。您还可以从存储区重新获取数据,该存储区现在会知道您添加了一个删除的模型(即使您还没有将其保存回服务器)
如果尚未保存,并且重新执行
peekRecord
,则需要从结果中筛选出所有已删除的记录。