4

我有这个 HTML 和 jsRender 模板:

<div id="output"></div>

<script id="template" type="text/x-jsrender">
<ul>
    {{for}}
    <li>{{:name}} likes to wear {{:shirtColor}} shirts</li>
    {{/for}}        
</ul>
</script>​

我有这样的javascript(jQuery):

var data = [{
    name: 'Dan Wahlin',
    shirtColor: 'white'},
{
    name: 'John Papa',
    shirtColor: 'black'},
{
    name: 'Scott Guthrie',
    shirtColor: 'red'}
]
;

$('#output').html($('#template').render(data));​

有些人可能会看到,这是 John Papa 的一个例子。也就是说,我稍微修改了一下。但它不能正常工作。原因是 jsRender 期望 Json 中有一个根对象,如 Johns 示例中 {{for}} 是 {{for people}} 并且数据对象如下所示:

var data = { people: [{
    name: 'Dan Wahlin',
    shirtColor: 'white'},
{
    name: 'John Papa',
    shirtColor: 'black'},
{
    name: 'Scott Guthrie',
    shirtColor: 'red'}
]
}
;

在我的 ASP.NET MVC 控制器中,返回的 Json 不带有根对象。我怎样才能使它工作?更改 Json 格式(我该怎么做?)?还是我在我的 jsRender 代码中做错了什么?

提前致谢!

4

3 回答 3

6

I had the same problem. The following should do the trick for you:

<script id="template" type="text/x-jsrender">
    <ul>
        {{for #data}}
            <li>{{>name}} likes to wear {{>shirtColor}} shirts</li>
        {{/for}}
    </ul>
</script>

This allows you to loop over the array passed into the render method instead of the individual item as in Jesus's answer.

于 2012-11-22T14:36:15.580 回答
2

将模板更改为:

<ul id="output"></ul>
<script id="template" type="text/x-jsrender">
    <li>{{:name}} likes to wear {{:shirtColor}} shirts</li>
</script>​

必须工作。因为当你渲染一个带有数组对象的模板时,他渲染了 n 次同一个模板。

于 2012-06-13T18:08:10.970 回答
0

将 {{for}} 更改为 {{for people}}

于 2012-10-30T11:17:38.607 回答