执行get或put in indexeddb后,回调正在更新范围。 问题是,ui中没有触发更新!
一个常见的解决方案是使用apply或digest,但这是错误的,你应该 NOT 使用这些操作。 Angular应该自动更新它。
现在我的猜测是,在阅读了一些内容之后,回调是在范围之外的不同上下文中执行的。
我的问题基本上是:如何在angularjs范围上下文中执行indexeddb回调?
修改 粗略看看它的构建方式:
GetObjectStoreData(iDb, objectStore, function (res) {
$scope.result = res;
}
调用是在范围内进行的,因此范围用于回调。 callback参数是对象存储的内容
答案 0 :(得分:1)
你断言你不应该使用Scope.$apply
,因为AngularJS应该为你做。
仅适用于Angular管理的回调。例如,当您使用$timeout
代替window.setTimeout
时,angular会在调用Scope.$apply
时包装您提供的回调,从而在回调完成后运行摘要周期。如果您直接与浏览器API交互而不是通过AngularJS进行调用,则 负责在适当的时间调用Scope.$apply
。
如果您不想直接管理作用域,则可以使用像angular-indexedDB这样的包装器库,其中(除其他外)在回调发生时处理作用域通知。