我正在使用Parse JS和Backbone,我尝试从Parse JS模型中打印一个值列表。这很容易,但我对objectId有问题。
然后,我有......
var Thing = Parse.Object.extend('MyThings');
var Things = Parse.Collection.extend({
model: Thing
});
var collection = new Things();
collection.fetch({
success: function(){
App.start(collection.toJSON());
}
});
这是观点...
ThingView = Backbone.View.extend({
tagName: 'tr',
render: function(){
this.$el.html(_.template($('#item-template').html(), this.model.attributes));
}
});
ThingListView = Backbone.View.extend({
tagName: 'table',
addAll: function(){
this.collection.forEach(this.addOne, this);
},
render: function(){
this.$el.empty();
this.addAll();
},
addOne: function(item){
var itemView = new ThingView({model: item});
itemView.render();
this.$el.append(itemView.el);
}
});
这是一个模板(使用Underscore.js)......
<script type="text/template" id="item-template">
<td><%= id %></td>
<td><%= name %></td>
<td><%= color %></td>
</script>
属性名称和颜色正确显示,但&#39; ID未定义&#39;
有什么想法吗?
答案 0 :(得分:1)
问题是 id 不属于属性。它实际上生活在对象的根部。所以你需要做的是将 this.model 传递给_.template()而不是 this.model.attributes ,然后在你的HTML中进行相应的调整 - 比如如下:
render: function(){
this.$el.html(_.template($('#item-template').html(), this.model));
}
<td><%= id %></td>
<td><%= attributes.name %></td>
<td><%= attributes.color %></td>