如果JSON属性名称包含完全停止,则模板将失败

时间:2015-12-07 17:19:25

标签: javascript json jsrender

我正在使用jsRender来渲染模板,但是我的JSON数据属性名称包含句号。

在网上举一个简单的例子,这很好用:

http://jsfiddle.net/mythical/4rtTy/

在属性名称中有一个句号,它不再有效:

http://jsfiddle.net/zLbw8rLL/

我需要使用什么语法/技术来允许jsRender获取这些属性?

var data = {
    people: [{
        "full.name": 'Dan Wahlin',
        shirtColor: 'white'
    }]
};


{{for people}}
<li>{{:full.name}} likes to wear {{:shirtColor}} shirts</li>
{{/for}}

2 个答案:

答案 0 :(得分:3)

就像在Javascript中您可以编写data.keydata['key']一样,您实际上可以使用语法"full.name"让JsRender访问#data['someKey']之类的属性名称 - 自{{ 1}}是当前数据项。

所以在你的情况下你可以写:

#data

这是您更新的小提琴:http://jsfiddle.net/BorisMoore/zLbw8rLL/1/

答案 1 :(得分:0)

你有这个JSON:

var data = {
    people: [{
        "full.name": 'Dan Wahlin',
        shirtColor: 'white'
    }]
};

这个模板

{{for people}}
<li>{{:full.name}} likes to wear {{:shirtColor}} shirts</li>
{{/for}}

这是不正确的,因为jsRender尝试获取此json结构的值:

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

参考:https://www.jsviews.com/#assigntag 示例:{{:data.paths}}