*更新:已解决,请向下滚动*
对于下面的内容,列表呈现,但不呈现行。这是因为我没有在复合视图中定义集合。
如果我确实在list.js中放置: collection: new User,那么我会得到以下错误:
Uncaught TypeError: Object function () {
return parent.apply(this, arguments);
} has no method 'on' 在backbone.js中:第203行,即:
// An inversion-of-control version of `on`. Tell *this* object to listen to
// an event in another object ... keeping track of what it's listening to.
listenTo: function (obj, name, callback) {
var listeners = this._listeners || (this._listeners = {});
var id = obj._listenerId || (obj._listenerId = _.uniqueId('l'));
listeners[id] = obj;
obj.on(name, typeof name === 'object' ? this : callback, this);
return this;
},视图
row.js
define([
'marionette',
'text!app/views/templates/user/row.html'
],
function (Marionette, Template) {
"use strict"
return Marionette.ItemView.extend({
template: Template,
tagName: 'tr'
})
})list.js
define([
'marionette',
'text!app/views/templates/user/list.html',
'app/collections/users',
'app/views/user/row'
],
function (Marionette, Template, Users, User) {
"use strict"
return Backbone.Marionette.CompositeView.extend({
template: Template,
itemView: User,
itemViewContainer: "tbody",
})
})通过执行以下操作解决了这个问题:
用户/list.js
define([
'marionette',
'text!app/views/templates/user/list.html',
'app/collections/users',
'app/views/user/row'
],
function (Marionette, Template, Users, User) {
"use strict"
return Backbone.Marionette.CompositeView.extend({
template: Template,
itemView: User,
itemViewContainer: "tbody",
initialize: function() {
this.collection = new Users()
this.collection.fetch()
}
})
})用户/row.js
define([
'marionette',
'text!app/views/templates/user/row.html'
],
function (Marionette, Template) {
"use strict"
return Backbone.Marionette.ItemView.extend({
template: Template,
tagName: "tr"
})
})发布于 2013-09-04 07:01:24
你确定你是
new Users()fetch()显示的数据?https://stackoverflow.com/questions/18581328
复制相似问题