Javascript 通过Spine.js中的this.item时,把手断裂
我正在尝试实现Spine.js文档中给出的Todo示例,如下所示: 只有我想使用把手而不是jQuery.tmpl。我用的是车把1.0.rc.1 但是,当我尝试呼叫时:Javascript 通过Spine.js中的this.item时,把手断裂,javascript,handlebars.js,spine.js,Javascript,Handlebars.js,Spine.js,我正在尝试实现Spine.js文档中给出的Todo示例,如下所示: 只有我想使用把手而不是jQuery.tmpl。我用的是车把1.0.rc.1 但是,当我尝试呼叫时: template: Handlebars.compile($('#history-template').html()), render: function(){ var t = this.template(this.item); this.replace(t); return this; } 把手在此.
template: Handlebars.compile($('#history-template').html()),
render: function(){
var t = this.template(this.item);
this.replace(t);
return this;
}
把手在此.template(this.item)
处引发异常:
在车把lexer中,此。_输入
返回为未定义
我的模板如下:
<script id='history-template' type='text/x-handlebars-template'>
<div class="content-inner {{#if viewed}}msg_unseen{{/if}}">
<div>{{data}}</div>
</div>
</script>
有什么想法吗?问题似乎是:
历史模板
,但您试图将其选择为$(“#我的模板)
{“data”:“hello”,“id”:“c-0”}
(一个对象)那样写入,不带方括号(使其成为一个数组)编辑 要使用数组形式的数据--
{data:“hello”,id:“c-0”}
--据我所知,要在把手模板中使用它,需要将其包装在对象中:
var obj = { data: "hello", id: "c-0" };
var handlebarsData = { items: obj };
这样,您就可以使用把手迭代表单{{{#each items}}
:
{{#each items}}
<div class="content-inner {{#if viewed}}msg_unseen{{/if}}">
<div>{{data}}</div>
</div>
{{/each}}
{{#每个项目}
{{data}}
{{/每个}}
您传入的数据不正确 支持将数据作为对象传递给车把。例如:
{"foo":"bar","baz":"faz"}
模板为:
<div>{{foo}}</div>
<div>{{baz}}</div>
{{foo}
{{baz}}
将被渲染为
<div>bar</div>
<div>faz</div>
条
法兹
Typo在上面的描述中,应该是通过#历史模板选择的。但不幸的是,仍然不能与给定的数据模型一起工作,这就是Spine处理其JSON的方式。1)我键入了一个单词。当通过#历史模板选择时,它仍然不能使用给定的数据模型。2)Spine.js似乎以该格式保存其JSON,我想宁愿使用同一个模型?@user1868231您看到我的更改数据对象的建议了吗?在您的问题中,您已将其编写为数组,但您的模板正在查找对象。我看到了,但正如我上面所说,Spine.js将其数据保存在哈希数组中。我宁愿使用Spine提供的内容。@amhou明白了…请查看我上面的更新。如果调整车把模板,并将数据包装到对象中,然后它就可以工作了。
{"foo":"bar","baz":"faz"}
<div>{{foo}}</div>
<div>{{baz}}</div>
<div>bar</div>
<div>faz</div>