开发者

ICanHaz.js - Possible to put a while loop in template?

Let's say I have a element, and inside it want to put an indefinite number of

  • items (based on the user's choices). Is there a way to开发者_StackOverflow create an ICanHaz template that allows for some sort of while loop. For instance:

        <ul>
         for(i = 0; i < numOfLi; i++)
           <li> {{ stuff }} </li>
        </ul>
    


    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.

  • 0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新问答

    问答排行榜