Angular JS识别摘要完成事件,并在视图切换期间从角度js中删除URL

ana*_*dan 7 javascript kineticjs angularjs

1)是否有任何摘要完成事件,我可以用它来更新我的画布.我有一个角度应用程序,它具有画布对象的不同属性的视图.每当我更改属性时,一旦摘要完成,如果我可以获得摘要完成事件,我可以更新画布(使用kineticJs)重绘具有最新属性的图表.

弹出视图和画布

目前我正在从视图中调用方法

在此输入图像描述

2)我只是在打开对象设置时使用视图并将其路由到新视图.在这种情况下,网址也随着网页/ #view而改变.它只是弹出窗口,我不需要页面末尾的#view,但仍然使用路由和视图概念.还有别的吗?

Ila*_*mer 24

更新

Karl seamon在ng-conf 2014上发表了演讲.

在这段视频中(22:20分钟),他谈到了内置$ postDigestWatch的未来可能性.

这是一个未解决的问题:https://github.com/angular/angular.js/issues/5828

所以,它可能会在未来的版本中找到核心,直到那时你可以使用下面的技巧.


关于plunker的一个例子.

  • 摘要周期可能有多个$digest.
  • $watch是第一个$digest注册一个$timeout将在摘要周期结束后运行的.
  • 我必须$watch立即取消注册,以避免$timeout一个摘要周期的多次回调.
  • $timeout回调中,我调用用户回调$watch为下一个注册a $digest.

将$ watch与$ timeout结合使用:

function postDigest(callback){    
  var unregister = $rootScope.$watch(function(){  
    unregister();
    $timeout(function(){
      callback();
      postDigest(callback);
    },0,false);       
  });
}

postDigest(function(){
  console.log('do something');
})
Run Code Online (Sandbox Code Playgroud)

$ digest,来自文档:

如果您希望在调用$ digest()时收到通知,则可以使用$ watch()注册watchExpression函数而不使用侦听器.

$ timeout,从这里:在$ digest之后延迟angularjs监视执行(提升DOM事件)

$ timeout将导致在执行函数后执行另一个摘要循环.如果您的触发器不影响任何Angular,您可以将invokeApply参数设置为false以避免运行另一个摘要周期.