Backbone-Events
view release on metacpan or search on metacpan
Returns the callback that was passed. This is mainly so anonymous functions
can be returned, and later passed back to 'off'.
## off(\[$event\], \[$callback\])
Remove a previously-bound callback from an object.
## trigger($event, @args)
Trigger callbacks for the given event.
## once($event, $callback)
Just like 'on', but causes the bound callback to fire only once before being
removed.
Returns the callback that was passed. This is mainly so anonymous functions
can be returned, and later passed back to 'off'.
## listen\_to($other, $event, $callback)
lib/Backbone/Events.pm view on Meta::CPAN
Returns the callback that was passed. This is mainly so anonymous functions
can be returned, and later passed back to 'off'.
=head2 off([$event], [$callback])
Remove a previously-bound callback from an object.
=head2 trigger($event, @args)
Trigger callbacks for the given event.
=head2 once($event, $callback)
Just like 'on', but causes the bound callback to fire only once before being
removed.
Returns the callback that was passed. This is mainly so anonymous functions
can be returned, and later passed back to 'off'.
=head2 listen_to($other, $event, $callback)
$handler->on('test-event', $second);
$handler->off('test-event', $first);
$handler->trigger('test-event');
ok !$triggered{first}, 'skipped first callback after turning it off explicitly';
is $triggered{second}, 1, 'triggered second callback';
%triggered = ();
$handler->off('test-event');
$handler->trigger('test-event');
ok !%triggered, 'skipped all callbacks after calling off with only event name';
%triggered = ();
$handler->on('test-event', $first);
$handler->off();
$handler->trigger('test-event');
ok !%triggered, 'skipped all callbacks after calling off with no arguments';
%triggered = ();
$handler->on('test-event', $first);
$handler->on('test-event', $second);
$handler->off(undef, $second);
$handler->trigger('test-event');
is $triggered{first}, 1, 'triggered callback after calling off with different callback';
ok !$triggered{second}, 'skipped callbacks after calling off with callback';
done_testing;
t/06_listen_to.t view on Meta::CPAN
my $listener = test_handler();
my $handler1 = test_handler();
my $handler2 = test_handler();
my $count = 0;
my $cb = sub { $count++ };
$listener->listen_to($handler1, 'all', $cb);
$listener->listen_to($handler2, 'all', $cb);
$_->trigger('event') for $handler1, $handler2;
is $count, 2, 'callbacks triggered twice when listening to two objects';
$count = 0;
$listener->stop_listening($handler2);
$_->trigger('event') for $handler1, $handler2;
is $count, 1, 'callbacks triggered once after listening stopped for one object';
}
{
my $listener = test_handler();
dies_ok { $listener->listen_to(1, 'event', sub {}) };
dies_ok { $listener->listen_to({}, 'event', sub {}) };
my $obj = bless {}, __PACKAGE__;
dies_ok { $listener->listen_to($obj, 'event', sub {}) };
}
t/09_stop_listening.t view on Meta::CPAN
$listener->stop_listening(undef, undef, sub {});
$handler->trigger('test-event');
is $count, 1, 'triggered callback after listening stopped for other callback';
$count = 0;
$listener->stop_listening;
$listener->listen_to($handler, 'test-event', $cb);
$listener->listen_to($handler, 'test-event', sub { goto &$cb });
$listener->stop_listening(undef, 'test-event');
$handler->trigger('test-event');
is $count, 0, 'no callback after listening stopped for event with multiple callbacks';
$count = 0;
$listener->stop_listening;
$listener->listen_to($handler, 'test-event', $cb);
$listener->listen_to($handler, 'test-event', sub { goto &$cb });
$listener->stop_listening(undef, 'test-event', $cb);
$handler->trigger('test-event');
is $count, 1, 'one callback triggered after listening stopped for one callback with two callbacks registered';
$count = 0;
$listener->stop_listening;
$listener->listen_to($handler, 'test-event', $cb);
$listener->listen_to($handler, 'different-event', $cb);
$listener->stop_listening(undef, 'test-event', $cb);
$handler->trigger('test-event different-event');
is $count, 1, 'one callback triggered after listening stopped for event with callback registered for two events';
{
( run in 0.540 second using v1.01-cache-2.11-cpan-9b1e4054eb1 )