如果 JSON 属性 名称包含句号,则模板失败

Template fails if JSON property names contains full stop

我正在使用 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}}

你有这个 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}}

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

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

{{for people}}
    <li>{{:#data['full.name']}} likes to wear {{:shirtColor}} shirts</li>
{{/for}} 

这是您更新后的 fiddle:http://jsfiddle.net/BorisMoore/zLbw8rLL/1/