我有一个棱角服务来更新$rootScope。更新实际上很好,但是它在控制台中抛出了一个错误,这让我很担心。
app.service("scroll", function($rootScope, $window) {
this.scrolling = function(delta){
$rootScope.scroll.current -= delta;
}
$rootScope.$apply();
});如果我删除了$rootScope.$apply(),错误就不会出现,但是当我在rootScope中引用它时,rootScope值似乎不会被更新。
例如,在我的HTML中:
{{scroll.current}}只有在我使用$rootScope.$apply()时才会更新。是否有更好的方法来更新$rootScope,还是我只是做错了什么?
引发的错误:
Error: [$rootScope:inprog] http://errors.angularjs.org/1.3.0-rc.5/$rootScope/inprog?p0=%24apply发布于 2014-11-12 10:01:24
由于$rootScope.$apply()触发了一个$digest,并且在任何时间点的角度上,只有一个$digest或$apply操作在进行中。
使用$timeout。
app.service("scroll", function($rootScope, $window, $timeout) {
this.scrolling = function(delta) {
$rootScope.scroll.current -= delta;
}
$timeout(function() {
$rootScope.$apply(); //this triggers a $digest
}, 1);
});发布于 2014-11-12 10:01:14
可能是你的职能:
$rootScope.$apply();也会在不需要时调用。
你只需加上这一行:
if ( !$rootScope.$$phase )
$rootScope.$apply()$$phase是角在消化的时候
编辑:将$rootScope.apply()更正为$rootScope.$apply()
https://stackoverflow.com/questions/26883939
复制相似问题