用mojolicious构建datalist的最佳方法

时间:2013-11-12 13:48:29

标签: perl mojolicious

用mojolicious构建html5 datalist的最佳方法是什么?

我找了一个标记帮助器,但没有找到构建它的标签助手。

以下是数据列表的示例:

<datalist id="frameworks">
    <option value="MooTools">
    <option value="Moobile">
    <option value="Dojo Toolkit">
    <option value="jQuery">
    <option value="YUI">
</datalist>

列表是动态的,是从db中获取的,所以我不能使用静态html块。

有类似的标签助手,例如我可以将<select>标记添加到我的模板中:

%= select_field country => [[Germany => 'de'], 'en']

产生:

<select name="country">
  <option value="de">Germany</option>
  <option value="en">en</option>
</select>

但我在default tag helpers中找不到任何关于数据列表的内容。

2 个答案:

答案 0 :(得分:3)

已经有一段时间了,但也许会发现它很有用。

在控制器中,您需要一个包含一些项目的数组。让我们创建它:

my @levelsArray = ();
for (my $i=0;$i<10;$i++){
    push @levelsArray, "level00".$i;
}

之后,将其发送到模板:

get '/index' => sub {
    my ( $mojo ) = @_;
    $mojo -> stash ('levelsArray' => \@levelsArray);
    $mojo -> render (template => 'index' );
};

最后,使用:

渲染它
<%= select_field 'levelSelected' => [ @{ stash('levelsArray') }] %>

答案 1 :(得分:-1)

我不确定这是多么具有特定性,但是模板中的简单html就不够了:

<datalist id="frameworks">
    <option value="MooTools">
    <option value="Moobile">
    <option value="Dojo Toolkit">
    <option value="jQuery">
    <option value="YUI">
</datalist>
<input type="text" list="frameworks" />

修改

让我澄清一下,这不是模板中的静态HTML ...您将在控制器中获取数据并将该数据传递给模板,模板将使用模板引擎构建此类HTML。