问题标签 [akita]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angular - Akita Angular 和多个组件
我一头雾水,我明白秋田的目的。没有意义的是,如果我要将秋田商店添加到模块中,那么我是否需要为每个模块添加商店?或者我是否使用一些奇怪的命名法,即我的所有秋田商店查询都驻留在一个模块中,即使其他模块需要它并且它没有意义?
AKA “如果 Akita 适用于所有组件,为什么它会存储在特定模块中”
跟随这篇文章很棒,但是他们当然只引用了一个商店,如果我有其他组件也需要商店怎么办(在我看来,将商店放在共享文件夹或核心文件夹中而不是特定模块中会更有意义?) https://medium.com/swlh/angular-state-management-with-akita-b4c5439c1ab5
任何意见是极大的赞赏。
谢谢
angular - 在规范文件中将“and”函数链接到“selectAll”会引发错误
我正在尝试遵循Akita
有关单元测试的官方文档Angular
:https ://datorama.github.io/akita/docs/angular/tests/ 。
但是我在模拟TodosQuery
返回值时遇到了问题。这是特定的行:
这是抛出的错误:
也许文档已经过时并且不再支持?这仍然是模拟Query
返回值的首选方式吗?
这些是我的 package.json 依赖项:
angular12 - Angular Akita 仅设置数组中的最后一个值
我是使用秋田状态管理的 Angular 新手。我正在尝试将值数组设置为实体状态。但由于某种原因,只有数组中的最后一项被设置。但是值的数量是正确的。IE。我在数组中有 14 个不同的项目。但在秋田,最后一个值设置为 14 次。不知道我在这里做错了什么。有人可以帮忙吗?
正面:
询问:
输出:
谢谢
angular - 秋田实体商店:订阅任意数量的变更实体
我正在维护两个实体商店;一个保存原始数据,一个保存处理过的数据。我想订阅第一个商店以在更新任何实体时获取更改,因此我可以处理数据并添加到第二个商店。
我有点困惑,因为我不想设置任意数量的selectEntity
subs,但我也不想通过selectAll
sub 获取 store1 的全部内容。有没有办法替代对商店所做的更改?
javascript - 如何使用 Akita Entity Service 从 Strapi 4 获取和显示数据?
我想要做什么:我正在尝试从我的strapi api中获取数据并显示它。
我正在使用什么:我正在使用 Angular、Strapi (v4) 和 Akita,我对这些都是全新的,我正在使用秋田实体服务。
获取数据有效,但我无法显示它。我试图显示的集合类型被调用question
并具有属性name
。有3个问题。
这是我的组件文件:
这是我的 html 文件。这里我想通过访问name
属性来显示问题:
这就是我的问题模型的样子(我觉得这就是问题所在):
这是我在前端看到的:
索引:0 - 问题:[object Object],[object Object],[object Object] - id:
索引:1 - 问题:[object Object] - id:
似乎所有三个问题都在数组的第一个索引中。我从 api 得到的数据是这样的: data response from api
所以看起来data
属性在数组的第一个索引中,而meta
数组在第二个索引中。但我不知道该怎么办。有任何想法吗?我尝试过:更改模型,但没有任何效果。
angular - 我应该如何在 Angular 中使用 Akita 只读对象的 2 方式绑定?
我有一个秋田商店,里面装满了来自服务器的数据。我正在尝试从商店获取一个对象并使用角度双向绑定 [()] 对其进行编辑。
每当我尝试更改对象的值时(在模板 HTML 中通过键入字段或在从服务加载数据后在组件 Typescript 中)我都会收到有关该属性不可编辑的错误。
我尝试在 Akita EntityStore 中添加 ImmerJS 并尝试在组件中使用 {...data} 。结果相同。
一些代码...
秋田店:
来自服务的位,这是向组件返回数据:
从组件:
上面的组件如上所述错误,但是如果我从那里删除名称设置,如果我尝试编辑输入字段中的值,我会得到相同的结果:
该值在模板加载时填充在页面上。
现在很可能我错过了 Angular 和/或 Akita 的一些关键方面,请随时告诉我!
编辑 - 潜在的解决方案 所以商店里的 Immer 似乎没有做我希望返回“草稿”对象的事情,我认为这是可变的(https://datorama.github.io/akita/docs/immer/)。
在我的服务中,我有代码通过查询从商店获取数据。我尝试更改服务(下面添加的代码很糟糕,承认)以复制数据存储对象并返回副本。这似乎允许端到端功能发挥作用。
但是我不确定这是正确的做法......
旧服务方式:
新服务方式:
angular - 从可观察的对象数组中过滤项目
假设我有一个可观察的过滤器数组:
会有很多过滤器可以从主题中动态添加和删除。每个过滤器都有自己的 Angular 组件。我需要能够让每个过滤器组件侦听该主题,并能够判断何时从主题中添加、修改或删除其各自的 MyFilter 对象,并采取相应的行动。
像这样的东西:
然后有一个包含许多属性的对象数组,我通过 combineLatest 运行这些对象,以及过滤器集合,并将结果显示在表格中。我还有另一个主题,它具有类似的数组,用于对多列进行排序。还有一个主题,其中包含要显示在表中的列集合,我们使用 ngFor 循环对其进行迭代。
我认为这不是处理过滤器的正确方法,但我正在尝试找出利用 rxjs 以正确方式执行此操作的最佳方法。例如,如果任何其他过滤器组件修改了过滤器集合,那么可观察事件不会在每个过滤器组件上触发吗?我希望能够过滤掉任何不涉及特定过滤器组件的列/属性的事件。但同时,最好知道何时从集合中删除列的过滤器。
有一个过滤器运算符,但它似乎适用于整个数组,而不是数组的各个项目。我也许可以使用 lodash 的一些功能,像这样:
但这感觉不对。当它的对象从集合中删除时,它仍然不会触发事件。RXJS 文档非常混乱,所以我不能 100% 确定哪种运算符或运算符组合最适合这种情况。非常感谢任何帮助。