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: <option value="1">First</option> <option value="2">Second</option>
似乎它已经解析了小胡子,但是您是否会引发这个错误?
注意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 循环吗?的主要内容,如果未能解决你的问题,请参考以下文章