Let's say I have a element, and inside it want to put an indefinite number of
<ul>
for(i = 0; i < numOfLi; i++)
<li> {{ stuff }} </li>
</ul>
bostonou
icanhaz (moustache) does include a way to loop.
In javascript:
var listOfStuff = {stuff: [
{key: "1", desc: "First"},
{key: "2", desc: "Second"}
]};
$("#mySelectBox").append(ich.myTemplate(listOfStuff));
In your view:
<script id="myTemplate" type="text/html">
{{#stuff}}
<option value="{{key}}">{{desc}}</option>
{{/stuff}}
</script>
<select id="mySelectBox">
</select>
The {{#stuff}}
and {{/stuff}}
delimit the list. Look at the Sections part of moustache for details.
Edit: Make sure to check out this answer if you're using jQuery 1.9 or above.
I'm not sure about iCanHaz, but John Resig (creator of JQuery) posted this method on his blog:
See JavaScript Micro-Templating
A sneak peak...
<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>
Nope. Can't be done. You need to render the html dynamically.
来源:https://stackoverflow.com/questions/7075424/icanhaz-js-possible-to-put-a-while-loop-in-template