From 1e6fdf4876cf4b5ee1eedd4ca6ad2888fec8a152 Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Wed, 14 May 2014 16:29:05 +0200 Subject: [PATCH] =?utf8?q?ClientJS:=20Controller-Instanz=20zum=20Rendern?= =?utf8?q?=20auch=20bei=20->new=20setzen=20k=C3=B6nnen?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- SL/ClientJS.pm | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/SL/ClientJS.pm b/SL/ClientJS.pm index fcc2c146c..0da0afd57 100644 --- a/SL/ClientJS.pm +++ b/SL/ClientJS.pm @@ -9,6 +9,7 @@ use SL::JSON (); use Rose::Object::MakeMethods::Generic ( + scalar => [ qw(controller) ], 'scalar --get_set_init' => [ qw(_actions _flash _error) ], ); @@ -188,6 +189,7 @@ sub to_array { sub render { my ($self, $controller) = @_; + $controller ||= $self->controller; $self->reinit_widgets if $::request->presenter->need_reinit_widgets; return $controller->render(\$self->to_json, { type => 'json' }); } @@ -269,7 +271,7 @@ Now some Perl code: my ($self) = @_; # Create a new client-side JS object and do stuff with it! - my $js = SL::ClientJS->new; + my $js = SL::ClientJS->new(controller => $self); # Show some element on the page: $js->show('#usually_hidden'); @@ -295,7 +297,7 @@ Now some Perl code: # Rendering can also be chained, e.g. $js->html('#selector', $html) - ->render($self); + ->render; } =head1 OVERVIEW @@ -345,13 +347,16 @@ are the function parameters. Returns the actions gathered so far as a JSON string ready to be sent to the client. -=item C +=item C Renders C<$self> via the controller. Useful for chaining. Equivalent to the following: $controller->render(\$self->to_json, { type => 'json' }); +The controller instance to use can be set during object creation (see +synopsis) or as an argument to C. + =item C Tells C<$self> that the next action is to be called on a jQuery UI -- 2.20.1