我有两个控制器。一个名为page1的页面和另一个名为page2的页面。在页面1我有一个运行动画的代码。我有一个无限调用自己的函数。在这一行。当我访问另一个状态时停止功能
.each('end',tick)当动画结束时,它再次开始tick()。
function tick(){
console.log("hello");
.
.
.
//line 190
paths.attr('transform', null)
.transition()
.duration(duration)
.ease('linear')
.attr('transform', 'translate(' + x(now - (limit - 1) * duration) + ')')
.each('end', tick) //when the transition ends, it start tick() again
}
这很好,因为它是一个无限的动画。我在tick函数中放了console.log(“hello”),然后每次执行这个函数时,单词“hello”被写入控制台。到现在为止还挺好 !。当我改变控制器的时候,即当我点击去第2页时,我以前的动画仍在运行,我仍然可以看到第一个控制器中的函数的console.log(“hello”)。
当我更换控制器时,如何停止此功能?
这是我的代码:
http://plnkr.co/edit/66cK7gWTNQNh4vmC2lmp?p=preview
是有一些条件可以在调用'tick()'之前检查?例如,'.each('end',function(){if(condition){tick();}})' – Nick
@snapjs任何情况都没关系 – unusuario
@aaron是的,但它不适用于我。我有一个错误.. – unusuario