NAME
Template::Lace::ComponentCallback - Create a component easily from a coderef
SYNOPSIS
{
package Local::Template::User;
use Moo;
with 'Template::Lace::ModelRole';
has [qw/title story/] => (is=>'ro', required=>1);
sub template {q[
<html>
<head>
<title></title>
</head>
<body>
<div id='story'></div>
<tag-anchor href='more.html' target='_top'>
See More
</tag-anchor>
</body>
</html>
]}
sub process_dom {
my ($self, $dom) = @_;
$dom->title($self->title)
->at('#story')
->content($self->story);
}
}
use Template::Lace::ComponentCallback;
my $factory = Template::Lace::Factory->new(
model_class=>'Local::Template::User',
component_handlers=>+{
tag => {
anchor => Template::Lace::ComponentCallback=>new(sub {
my ($self, %attrs) = @_;
return "<a href='$_{href}' target='$_{target}'>$_{content}</a>";
}),
},
},
);
In this case %attrs
are the results of processing attributes.
NOTE You might prefer to call this via Template::Lace::Utils instead.
DESCRIPTION
Lets you make quick and dirty components from a coderef. To make this even faster and dirtier we localize $_ to $self and %_ to %attrs.
METHODS
This class defines the following public instance methods:
sub make_dom
Create an instance of Template::Lace::DOM. Useful if you have complex component setup and transformation.
SEE ALSO
AUTHOR
Please See Template::Lace for authorship and contributor information.
COPYRIGHT & LICENSE
Please see Template::Lace for copyright and license information.