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

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

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

      标签: jquery templates zepto icanhaz.js


      【解决方案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}} 分隔列表。查看moustacheSections部分了解详情。

      编辑:如果您使用的是 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 上面的结构。它不起作用 - 查看stackoverflow.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。

        【讨论】:

        • 好吧,这似乎不是真的
        猜你喜欢
        • 2023-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-21
        • 2019-11-01
        • 2015-05-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多