有没有办法 "watch" IndexedDB 记录,以便我可以在它被更改时做出响应?

Is there a way to "watch" an IndexedDB record so I can respond when it's been changed?

我正在构建一个 Angular + TypeScript 应用程序,它使用 IndexedDB 在本地存储数据。


我有一个 Angular 指令,它将 scope 变量的值设置为从 IndexedDB 请求返回的一些数据。它非常简单,可以做类似的事情:

指令A:

// getGroup() is making the requests to IndexedDB:
this.dataService.getGroup().then((groupOne) => {
    this.scope.items = groupOne.items;
});

我的指令的视图循环遍历以下每一项:

<div ng-repeat="item in items">{{ item }}</div>

我有另一个 Angular 指令(我们称之为 指令 B),即 updating/inserting 与 [=16= 关联的 items ].

指令 B:

groupOne.items.push("a new item");
this.dataService.updateGroup(groupOne).then(() => {
   // groupOne has been changed!
   // how can I let Directive A know about this, so Directive A can update its scope.items?
});

当然,指令 A 不知道 指令 BgroupOne 所做的更改,除非它发出另一个请求.因此,我的观点是 "static".

我知道我可以将 指令 A 的 IndexedDB 请求包装到 interval 中并检查更新,但这似乎是解决此问题的一种奇怪方法.

有没有办法让 IndexedDB 收到此更改的通知?是否有 Angular 提供的东西可以帮助解决这个问题(类似于 $scope.$watch())?

目前还没有一种方法可以用纯 IndexedDB 做到这一点,但它正在制作原型。名字是 "Observers"。如果您愿意,可以尝试使用 polyfill

这不是我想要的(这就是我接受 dgrogan 的回答的原因),但万一偶然发现这个问题的人对我最终做了什么感到好奇:

  • 每当我更改 groupOne(或我关心的任何其他内容)时手动 broadcasting 自定义事件暂时解决了我的问题。
  • 我使用 $scope.$broadcast() 来自控制器(管理 指令之间的一些交互)让指令A知道 使用 $scope.$on().
  • 所做的更改 指令 B
  • 这篇文章真的很有帮助:http://toddmotto.com/all-about-angulars-emit-broadcast-on-publish-subscribing/