【发布时间】:2013-09-04 16:26:05
【问题描述】:
如果我想将以下数据呈现给一个主干.js 集合,我创建的 JSON 应该是什么样子?:
id: 1
fname: "John"
surname: "Lennon"
email: "john@beatles.com"
age: 22
id: 2
fname: "Paul"
surname: "McCartney"
email: "paul@beatles.com"
age: 22
id: 3
fname: "George"
surname: "Harrison"
email: "george@beatles.com"
age: 20
id: 4
fname: "Ringo"
surname: "Starr"
email: "ringo@beatles.com"
age: 24
我一直导出如下:
[{
"id":1,
"fname":"John",
"surname":"Lennon",
"email":"john@beatles.com",
"age":22
},{
"id":2,
"fname":"Paul",
"surname":"McCartney",
"email":"paul@beatles.com",
"age":22
},{
"id":3,
"fname":"George",
"surname":"Harrison",
"email":"george@beatles.com",
"age":20
},{
"id":4,
"fname":"Ringo",
"surname":"Starr",
"email":"ringo@beatles.com",
"age":24
}]
当出现上面的 JSON 时,我的收藏似乎只包含最后的披头士乐队 (Ringo)。
这是我的观点:
var app = app || {};
app.BeatleView = Backbone.View.extend({
el: '#page',
template: Handlebars.getTemplate( 'account_statement' ),
initialize: function() {
console.info('init:',this.collection);
this.render();
this.listenTo(this.collection, 'add', this.render);
this.listenTo(this.collection, 'reset', this.render);
this.collection.fetch();
},
// render library by rendering each book in its collection
render: function() {
var data = this.collection.toJSON();
console.log('col', this.collection ); // added
this.$el.html( this.template( {beatles: data} ));
return this;
}
});
这是我的收藏
var app = app || {};
app.BeatlesCollection = Backbone.Collection.extend({
model: app.Beatle,
url: 'http://localhost/path/to/beatles',
initialize: function() {
console.log('Init Collection');
}
});
这是我的模特
var app = app || {};
// create a model to represent a single transaction on a statement
app.Transaction = Backbone.Model.extend({});
这是console.log('col', this.collection ); 在我的视图渲染方法中显示的内容:
col child {length: 1, models: Array[1], _byId: Object, _listenerId: "l2", _events: Object…}
_byId: Object
_events: Object
_listenerId: "l2"
length: 1
models: Array[1]
0: child
_changing: false
_events: Object
_pending: false
_previousAttributes: Object
attributes: Object
amount: 205.99
currency: "USD"
date: "2013-05-13"
id: 13
vendor: "Reebok Outlet"
__proto__: Object
changed: Object
cid: "c3"
collection: child
id: 13
__proto__: Surrogate
length: 1
__proto__: Array[0]
__proto__: Surrogate
我的把手模板如下所示:
<h1>Your Statement</h1>
<table border="1">
<thead>
<th>Name</th>
<th>Email</th>
<th>Age</th>
</thead>
<tbody>
{{#each beatle}}
<tr>
<td>{{this.fname}} {{this.surname}}</td>
<td>{{this.email}}</td>
<td>{{this.age}}</td>
</tr>
{{/each}}
</tbody>
</table>
【问题讨论】:
-
你是如何加载收藏的?
-
我添加了更多信息——希望这是你想要的
-
我从未使用过 Handlebars 或 Backbone,但是您确定模板函数需要 JSON 吗?不应该更像
this.$el.html( this.template( {beatles: this.collection.models} ));吗?您可以通过查找它的length属性来检查您的集合包含多少条记录。 -
添加您的车把 sn-p。其余的在我看来还可以。
-
问题似乎出在模板中
标签: json rest backbone.js