ICanHaz.js - 可以在模板中放置一个 while 循环吗?

Posted

技术标签:

【中文标题】ICanHaz.js - 可以在模板中放置一个 while 循环吗?【英文标题】:ICanHaz.js - Possible to put a while loop in template? 【发布时间】:2011-10-27 20:57:50 【问题描述】:

假设我有一个元素,里面想放一个不定数量的

个项目(基于用户的选择)。有没有办法创建一个允许某种 while 循环的 ICanHaz 模板。例如:
    <ul>
     for(i = 0; i < numOfLi; i++)
       <li>  stuff  </li>
    </ul>

【问题讨论】:

【参考方案1】:

icanhaz(小胡子)确实包含一种循环方式。

javascript中:

var listOfStuff = stuff: [ 
                      key: "1", desc: "First",
                      key: "2", desc: "Second"
                  ];
$("#mySelectBox").append(ich.myTemplate(listOfStuff));

在你看来:

<script id="myTemplate" type="text/html">
  #stuff
    <option value="key">desc</option>
  /stuff
</script>

<select id="mySelectBox">
</select>

#stuff/stuff 分隔列表。查看moustache的Sections部分了解详情。

编辑:如果您使用的是 jQuery 1.9 或更高版本,请务必查看 this answer。

【讨论】:

我在尝试您的解决方案时遇到了这个错误:Uncaught Error: Syntax error, unrecognized expression: &lt;option value="1"&gt;First&lt;/option&gt; &lt;option value="2"&gt;Second&lt;/option&gt; 似乎它已经解析了小胡子,但是您是否会引发这个错误? 注意jquery 1.9.1 上面的结构。它不起作用 - 查看***.com/questions/15650487/… 中描述的问题/答案 谢谢@tkoomzaaskz。我已更新答案以包含您的链接。【参考方案2】:

我不确定 iCanHaz,但 John Resig(JQuery 的创建者)在他的博客上发布了这种方法:

JavaScript Micro-Templating

偷偷摸摸...

<script type="text/html" id="user_tmpl">
  <% for ( var i = 0; i < users.length; i++ )  %>
    <li><a href="<%=users[i].url%>"><%=users[i].name%></a></li>
  <%  %>
</script>

【讨论】:

【参考方案3】:

不。做不到。您需要动态呈现 html。

【讨论】:

好吧,这似乎不是真的

以上是关于ICanHaz.js - 可以在模板中放置一个 while 循环吗?的主要内容,如果未能解决你的问题,请参考以下文章

在 jQuery 移动单页模板中放置脚本标签的位置

如何在 Angular 的 index.html 中放置组件/模板占位符?

如何在 Django 中放置指向网站主页的链接/网址?

我想在一个html文件中放置多个网站

如何在骨干模型中放置按钮?

如何选择在 View 和 ViewController 中放置哪些代码?