在handlbars.js上不是很新,但是在尝试访问嵌套属性之前,我的#each功能正常。具体是author.name
<!-- Handlebars.js Blog Template -->
<script id="posts-tpl" type="text/x-handlebars-template">
{{#each post}}
<div class="blog-post">
<h2 class="blog-post-title"><a href="#">{{title}}</a></h2>
<p class="blog-post-meta">{{author.name}}</p>
<div>{{{body}}}</div>
</div>
{{/each}}
</script>
Chrome Javascript控制台将作者显示为具有正确数据的属性“名称”。
Backbone.js视图似乎也可以正常工作:
var PostsView = Parse.View.extend({
template: Handlebars.compile($('#posts-tpl').html()),
render: function(){
var collection = { post: this.collection.toJSON() };
this.$el.html(this.template(collection));
}
我在http://picze.co/blog上有一个完整的示例
如果您查看传递给模板的内容,就会发现问题所在。
在您的render
职能中,尝试检查this.collection.toJSON();
实际情况。
基本上,它看起来像这样:
[
{
author: {
__type: "pointer",
className: "_User",
objectId: "JCAjG1AIN0"
},
title: "WTFBBQ",
body: "<p><h3>test</h3> egg on face. This cannot be good. </p>"
}
]
看起来author
缺少name
属性
似乎该name
属性存在于模型中,但作为另一个模型嵌套了,因此调用.toJSON()
时不会得到它。
一种方法是也包括author
模型:
var collection = { post: this.collection.toJSON() };
for (var i=0; i<collection.post.length; i++) {
if (collection.post[i].author) {
collection.post[i].author = this.collection.at(i).get('author').toJSON();
}
}
我不熟悉parse.js,因此这可能不是最好的解决方案,但它应该可以工作
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句