【问题标题】:jsRender loop a List<string>jsRender 循环一个 List<string>
【发布时间】:2012-08-06 13:44:18
【问题描述】:

jsRender 中关于 {{for}} 循环的问题。

演示表明我们可以遍历复杂对象的集合并显示它们的属性:

{{for languages}}
    <div>
        <em>{{>name}}</em>
    </div>
{{/for}}

但是如果我的languages 只是一个List&lt;string&gt; 怎么办?将不会显示{{&gt;name}}。我们如何引用单个字符串值?

谢谢。

【问题讨论】:

    标签: jsrender


    【解决方案1】:
    {{#data}}
    

    不适合我。

    似乎有些东西已经改变了,这就是为我所做的:

    {{>#data}}
    

    【讨论】:

    • @r2b2s - 实际上恰恰相反。 “当所呈现的数据不完全受信任时,应使用 {{> ...}} 标签而不是 {{: ...}} - 以防止 HTML 注入攻击。” - jsviews.com/#htmltag
    【解决方案2】:

    您应该能够使用#data 访问循环内的各个字符串值。

    【讨论】:

    • 只是出于好奇,这是一种记录在案的方法吗?
    • @mattlohkamp 有人提到它here(“#data#view.data”的缩写)和here(“一个视图有一个数据属性,它是用于呈现该视图的当前数据上下文")
    • 需要上下文中的示例
    • 这是一个非常古老的答案,虽然当时它是正确的,但它完全有可能与 jsRender 的最新版本无关。好几年没用jsRender了,也没跟上他们的变化。
    【解决方案3】:

    您应该使用:

    {{&gt;#data}}{{&gt;}} -(编码 HTML)

    {{:#data}}{{:}} -(非 HTML)

    例如:

    假设您的 languages 对象如下所示:

    var languages = ['en', 'sp', 'zh'];

    {{for languages}}
        <div>
            <em>{{>}}</em>
        </div>
    {{/for}}
    

    将导致:

    <div>
       <em>en</em>
    </div>
    <div>
       <em>sp</em>
    </div>
    <div>
       <em>zh</em>
    </div>
    

    文档

    #data

    Difference between : and &gt;

    【讨论】:

      【解决方案4】:

      另外,如果你想做一些比较,你可以使用如下代码:

      {{if #data == 'xxx' || #data == 'yyy'}}
      ...
      {{/if}}
      

      在脚本中。

      【讨论】:

        猜你喜欢
        • 2018-01-08
        • 1970-01-01
        • 2014-10-09
        • 2012-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-26
        相关资源
        最近更新 更多