2016-03-07 138 views
0

我有一个事件,我只想处理一次。根据我的thisthis博客的理解,具有以下样式应确保这种行为:角度事件只能触发一次触发一次

var unbind = $scope.$on(event, function(){ 
    //do stuff 
    unbind(); 
} 

但是当我把一个断点在这个代码,我可以看到它被多次调用。

如何确保代码只运行一次?

+0

我只想设置一个标志和使用'$范围。在$(“$摧毁” ...'做清理工作。如果您使用的呢?又是什么'解除绑定()'吗? – charlietfl

+0

@charlietfl'$ scope。$ on'以及'$ scope。$ watch'返回一个解除绑定函数,当被调用时,该函数结束了监听器,但我发现我的问题 - 'unbind()'调用需要是因为事件是异步的第一行 –

+0

行..不知道,因为你曾经无法解除绑定,所以必须已经加入到api中 – charlietfl

回答

1

由于事件的异步性质,需要先调用unbind()调用,而不是最后调用,以防止多个同时发生的事件。

var unbind = $scope.$on(event, function(){ 
    unbind();//first, not last 
    //do stuff 
}