1

我在秋田商店中存储动态值而不创建模型。

我正在尝试将对象从存储添加到现有数组,我是秋田新手,所以尝试深度克隆秋田存储值,然后将该对象推送到数组并将更改后的数组再次设置为存储,但它正在重复存储中的值

updatestore(data) {
  var _res = _.cloneDeep(this.GetState());
  _res[1].geography.data.push(data);
  this.gStore.destroy();
  this.gStore.set(_res);
  this.GetState();
}

我在stackblitz中复制了它

4

1 回答 1

3

秋田为我们提供了两种类型的商店:

  • 可以保存任何形状数据的基本存储

  • 表示实体的平面集合的实体存储。

实体店

您选择了第二个选项(这是您的地理收藏的正确选择)并创建了基于实体的商店。现在您需要向秋田商店提供一个集合,但您提供的是整个 json 对象。秋田尝试将此对象转换为实体数组,但创建了错误的数组。

放()

用提供的集合替换当前集合,并重置活动实体

取自秋田文档

你应该做的是将一个数组传递给EntityStore.set方法

this.serv.SetState(data['data'].geography.data)

然后简单地调用 EntityStore.add 方法以向您的集合中再添加一项:

this.gStore.add(data);

Forked Stackblitz Akita 实体店


基本商店

如果您不想使用方便的 EntityStore,那么您可以实现基本存储:

import { Store, StoreConfig } from '@datorama/akita';

export class GeoStore extends Store<IGeoState> {
   ...

只有这样,您才能像使用Store.update方法描述的那样更新商店

var _res = _.cloneDeep(this.GetState());
_res.data.geography.data.push(data);

this.gStore.update(_res);

Forked Stackblitz Akita 基本款

于 2020-07-23T20:18:49.420 回答