条件事件监听器
Conditional EventListener
我只是想知道是否有一种方法可以定义条件事件侦听器,即是否有一种方法仅在满足某些条件时才侦听事件。
我想我要求的是一个非正统的东西,或者已经存在一种我忘记了的方法。
示例:
设 'lastRepeat'
为指令在 ng-repeat 结束时发出的事件。
app.controller('ctrl',function($scope){
$scope.$on('lastRepeat', callback); // Here the callback will be called every time lastRepeat event is emitted by the directive
});
但我正在寻找的是这样的东西(这是我想到的,解决方案不需要使用相同的方法):
app.controller('ctrl',function($scope){
function foo(){
if(bool)
$scope.$on('lastRepeat', callback); // Problem listening like this is that a listener is created everytime foo is called and condition is met and hence we end up having multiple listeners
}
)};
基本上我想避免多次创建监听器。有没有一种方法可以像变量一样存储此侦听器,并且仅在满足某些条件时才进行侦听。
怎么样:
app.controller('ctrl', function($scope) {
var condition = false;
var callback = function () {};
$scope.$on('lastRepeat', function() {
if (!condition) return;
callback();
});
});
我只是想知道是否有一种方法可以定义条件事件侦听器,即是否有一种方法仅在满足某些条件时才侦听事件。
我想我要求的是一个非正统的东西,或者已经存在一种我忘记了的方法。
示例:
设 'lastRepeat'
为指令在 ng-repeat 结束时发出的事件。
app.controller('ctrl',function($scope){
$scope.$on('lastRepeat', callback); // Here the callback will be called every time lastRepeat event is emitted by the directive
});
但我正在寻找的是这样的东西(这是我想到的,解决方案不需要使用相同的方法):
app.controller('ctrl',function($scope){
function foo(){
if(bool)
$scope.$on('lastRepeat', callback); // Problem listening like this is that a listener is created everytime foo is called and condition is met and hence we end up having multiple listeners
}
)};
基本上我想避免多次创建监听器。有没有一种方法可以像变量一样存储此侦听器,并且仅在满足某些条件时才进行侦听。
怎么样:
app.controller('ctrl', function($scope) {
var condition = false;
var callback = function () {};
$scope.$on('lastRepeat', function() {
if (!condition) return;
callback();
});
});