出于某种原因,我无法在此视图中触发addOne方法。 render方法很好。这个集合是从另一个实例化它的模块传入的。当我将括号添加到方法调用时它会触发,但是Underscore会抛出错误。
define(['backbone',
'jquery',
'underscore',
'views/user',
'models/user',
],
function(Backbone,$,_,UserView,UserModel){
var Users= Backbone.View.extend({
tagName:'ul',
className:'well',
initialize:function() {
_.bindAll(this);
},
render:function() {
this.collection.each( this.addOne, this );
return this;
},
addOne:function() {
console.log('inside of addOne');
var userView = new UserView({model:UserModel});
this.$el.append(userView.render().el);
}
});
return Users;
});
答案 0 :(得分:0)
您的UserView是模型视图。这意味着你需要传递一个模型的实例,而不是模型模块的定义,这就是“UserModel”在你的情况下所拥有的。
示例:
var um = new UserModel({name: 'foo', id: 1});
var uv = new UserView({model: um}); //um is an instance of the model 'UserModel'
在您的情况下,由于模型对象来自迭代this.collection,它将是(正如mu is too short
上面正确指出的那样):
addOne: function(m) {
console.log('inside of addOne');
var userView = new UserView({model: m});
this.$el.append(userView.render().el);
}
另外要小心,以便在调用render()时this.collection
不为空。