【问题标题】:best way to construct datalist with mojolicious用 mojolicious 构建数据列表的最佳方法
【发布时间】:2013-11-12 13:48:28
【问题描述】:

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

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

这是一个数据列表的例子:

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

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

有类似的标签助手,例如对于&lt;select&gt; 标签,我可以将其放入我的模板中:

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

产生:

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

但我在default tag helpers 中找不到有关数据列表的任何信息。

【问题讨论】:

    标签: perl mojolicious


    【解决方案1】:

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

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

    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') }] %>
    

    【讨论】:

      【解决方案2】:

      我不确定这是如何特定于 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。

      【讨论】:

      • 您好,该列表是动态的,是从数据库中获取的。所以我不能使用静态html。我可以用一个简单的循环单独构建列表,但想知道是否有一些标签助手可用。
      • 那么在您的控制器中,您将获得数据列表的选项,将其转发到模板并像这样呈现它?所以模板不会是静态的...
      • @SlavenTomac 我认为您误解了 OP 实际尝试做的事情。我更新了问题以显示类似的标签助手。仅仅声明模板可以在需要的地方手动构建这样的列表是没有帮助的——这是 OP 试图避免的明显解决方案。标签助手是一种更具表现力的解决方案。
      猜你喜欢
      • 2018-07-14
      • 1970-01-01
      • 2013-06-11
      • 1970-01-01
      • 2015-04-20
      • 2017-03-14
      • 1970-01-01
      • 1970-01-01
      • 2021-05-11
      相关资源
      最近更新 更多