3

用mojolicious构建 html5 数据列表的最佳方法是什么?

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

以下是数据列表的示例:

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

该列表是动态的,并且是从数据库中获取的,所以我不能使用静态的 html 块。

有类似的标签助手,例如<select>我可以放入模板的标签:

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

产生:

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

但我在默认标签助手中找不到有关数据列表的任何内容。

4

2 回答 2

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') }] %>
于 2017-08-23T09:35:54.870 回答
-1

我不确定这是如何特定于 mojolicious 的,但是模板中的简单 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。

于 2013-11-12T13:51:02.553 回答