问题标签 [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.

0 投票
0 回答
58 浏览

angular - 复杂的可观察链异步只订阅一次

我有一些复杂的可观察对象链,打算填充 2 个不同的存储(如果为 null),并使用填充的对象创建第三个对象并将其输入模板 | 异步的。

我怀疑我的一个 observables 即将过期,因为当我编辑数据并更新我的商店时,数据并没有反映为已更新。

可观察的链有点像这样:查询存储名册 > 没有名册?> API 调用来填充商店 > 名册?> 清单查询商店 > 没有清单?> API 调用填充商店 > 清单?> 将名册和清单组成注册表 > 模板作为注册表$ | 异步

名册.component.ts:

名册.query.ts:

manifest.query.ts:

名册.service.ts:

api.service.ts:

我 90% 确定问题出在我如何编写 this.route.params 的订阅,因为我在另一个使用相同数据的区域中没有看到相同的问题(但没有编辑所以它没有't 链接路由并存储 observables)

编辑:奇怪。删除 observable 组合以支持超时同步调用(以测试事物)并没有改变行为:

它仍然可以在标头中使用,我订阅了路由服务(而不是使用激活路由),但该路由服务似乎在路由器插座中不起作用。

0 投票
0 回答
653 浏览

angular - 使用秋田状态库向嵌套数组添加对象 - Angular 9

我的秋田商店中有下一个实体结构:

我正在尝试将另一个对象添加到特定值的数据数组中,例如我想添加{dataId: 1.5, text: 'dfg}到值的数据中valueId: 1.1。所以结果应该是这样的:

我试图做下一件事,但没有奏效:

任何帮助,将不胜感激

0 投票
1 回答
1050 浏览

angular - Angular 使用 Akita 商店 ngOnInit 在首次加载时不起作用

我的 Angular10 应用程序使用 Akita 商店时遇到问题。

当我在我的组件页面上启动/刷新我的应用程序时,我在我的组件上看到 LOADING。

但是,通过控制台,看起来商店已经加载了项目,并且我的 console.logs 在 onInit 中被触发。

当我在他们应该加载的页面上刷新应用程序时,它不会,它只会显示“正在加载”。但是,如果我单击此页面的路由器链接按钮,它将加载。

/models/post post.model.ts

/stores/post post.store.ts

/stores/user user.query.ts

服务/帖子posts.service.ts

视觉/视觉.component.ts

视觉/视觉.component.html

0 投票
1 回答
491 浏览

angular - 我应该如何使用秋田商店构建我的 Angular 服务?

我正在使用 Akita 实体数据存储在 Angular 应用程序的前端缓存数据。

在我的服务中,我有一些类似这样的功能:

现在,可以理解的是,当实体在商店中更新时,Akita 商店会触发大量事件(属性被设置,保存后更新)。

我觉得我想在保存后更新商店,以防服务器端逻辑对实体产生副作用(在这种情况下确实会发生)。

像这样保持 FE/BE 同步的秋田方式是什么?

我想我可以从商店中获取实体,为其设置值,然后调用 save 函数,但这似乎与 Akita 使用 store.update() 更新对象属性的方式相反。

当 Akita 从它的 getEntity() 函数中重新调整不可变对象时,我最终得到了一些感觉不对的东西(assign(),不使用 akita 内置 store.update())......

0 投票
1 回答
69 浏览

rxjs - Akita 和 Rxjs 的 Angular 在外部 observable 内部存在 foreach 问题

我是秋田的 Angular 新手。

我有一个应用程序,用户在其中加载并设置在商店中。所有用户都有一个初始 imageUrl 属性设置为例如:'http://testxxxxxx' 该组件查询所有用户的商店,并通过管道调用一个循环遍历每个人的方法,进行 api 调用以获取“blob”图像响应从 api,并使用人员的 imageUrl = 'blob:http:2fk2fjadkf' 和组件设置 <img src='imageUrl' 更新商店。

但是由于某种原因,外部 observable 内部的方法循环了很多次。不知道为什么。

这是我的代码:

零件:

Component.html 使用 peopleToShow$ 和每个人的 imageUrl 属性。现在它没有采用在 this.loadImagesAsBlobs 中设置的更新的 blob url

正面:

谢谢

0 投票
0 回答
104 浏览

angular - 为什么代码覆盖率报告中不包含 rxjs pipe() 运算符?

问题

rxjsmap()未包含在伊斯坦布尔代码覆盖率报告中,尽管正在测试这些行。与此相关的其他问题包括 http-testing,这与此无关。我需要找到一种方法来测试管道或pipe()从覆盖率报告中排除语句。

描述

我有一个秋田实体商店和车辆查询。根据某些设置,车辆可以使用(frontendLocation如果存在)或CurrentLocation(命名不由我决定)。

vehicle.query.ts

在我的规范文件中,我设置了一个带有 frontendLocation 的活动车辆并测试查询:

  1. 获取车辆的前端位置(如果存在)
  2. 如果 frontendLocation 不存在,则获取车辆的 CurrentLocation。

这涵盖了查询location$管道内的两个选项。两个测试都通过了,但map()查询的第 4 行仍然显示为未覆盖。

0 投票
0 回答
39 浏览

angular - 保存过滤器属性时,秋田有什么更好的性能?

语境

我是Akita的新手,但我已经实现了一个会话存储。

现在我必须将一堆聊天对象存储到一个商店中,我想到了这个结构:

在哪里:

  • selectedChatId是 UI 中显示的聊天窗口(全局状态)。
  • typingId是在聊天中输入的用户的 ID(商店中每个聊天的本地状态)。
  • lastMessageIddraftMessageId也是每个聊天的本地状态。

问题

我也想保存一个减少聊天 ID 的列表。每个聊天都可以减少,以便在屏幕上最小化(也可以扩展)。所以这也是本地聊天状态。

我想检索减少的聊天列表,那么效率会更高吗?(我被迫使用Akita v4,所以我不能filterBy使用selectAll

  1. 存储一个新的 ChatUI 本地属性并创建一个查询来过滤与该属性的聊天
  2. 使用一组 id ( ) 存储 ChatState ui 全局属性,Set<string>然后访问存储以查找这些对象。

    在 store 中只存储普通对象,避免存储 Map 或 Set

  3. 创建一个新商店以保存/删除减少的聊天。
    • 我不喜欢这样,我认为重复数据是一种反模式

谢谢大家

0 投票
0 回答
53 浏览

angular - 禁用以不可变数据存储为数据源的 AG Grid 的客户端排序

我正在将 AG Grid 与 Angular 和一个不可变存储(秋田)一起使用。我设法连接了 AG Grid 和秋田商店,但我仍然对如何基本上停用 AG Grid 的内置排序(不会丢失列标题中的排序功能)并做出反应sortChanged以便然后更新感到困惑秋田商店(然后更新 AG Grid)。

0 投票
1 回答
56 浏览

angular - Angular:akitaConfig 的放置位置

我已经尝试akitaConfig直接放置在我的文件的构造函数中app.component.ts,它在其他任何东西之前被调用,但它似乎没有正确配置之后创建的数据存储。我正在尝试设置resettabletrue全局。我发现这样做的唯一方法是将其设置在每个单独的商店中,这并不理想。

TIA。

0 投票
2 回答
114 浏览

angular - 秋田查询 this.selectAll 在服务调用完成之前返回空列表

这是我的 widgetquery.ts

在前端我使用 *ngIf 像这样:

我组件中的构造函数调用此函数,从服务调用中获取小部件(服务调用成功...)

[ ]但是 selectAll 查询在返回真实数据之前返回一个空列表[ widget1, widget2 ]

所以我得到一个空列表,然后是真实数据(填充列表)。

我不想要首先出现的空列表(即使真实数据有时可能是空列表)......

为什么我从秋田得到第一个空列表?

我可以使用某种“标志”或“初始化状态”来告诉秋田:在我的服务调用完成之前不要从查询中返回数据,并通过此行将数据添加到存储中this.WidgetStore.add(liste);