有没有办法 "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 不知道 指令 B 对 groupOne
所做的更改,除非它发出另一个请求.因此,我的观点是 "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/
我正在构建一个 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 不知道 指令 B 对 groupOne
所做的更改,除非它发出另一个请求.因此,我的观点是 "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/