AngularJS范围不更新

时间:2015-03-19 14:58:12

标签: angularjs angularjs-scope indexeddb digest

执行get或put in indexeddb后,回调正在更新范围。 问题是,ui中没有触发更新!

一个常见的解决方案是使用apply或digest,但这是错误的,你应该 NOT 使用这些操作。 Angular应该自动更新它。

现在我的猜测是,在阅读了一些内容之后,回调是在范围之外的不同上下文中执行的。

我的问题基本上是:如何在angularjs范围上下文中执行indexeddb回调?

修改 粗略看看它的构建方式:

GetObjectStoreData(iDb, objectStore, function (res) {
    $scope.result = res;
}

调用是在范围内进行的,因此范围用于回调。 callback参数是对象存储的内容

1 个答案:

答案 0 :(得分:1)

你断言你不应该使用Scope.$apply,因为AngularJS应该为你做。

仅适用于Angular管理的回调。例如,当您使用$timeout代替window.setTimeout时,angular会在调用Scope.$apply时包装您提供的回调,从而在回调完成后运行摘要周期。如果您直接与浏览器API交互而不是通过AngularJS进行调用,则 负责在适当的时间调用Scope.$apply

如果您不想直接管理作用域,则可以使用像angular-indexedDB这样的包装器库,其中(除其他外)在回调发生时处理作用域通知。