Backbone.js Can';我们无法让主干网活动发挥作用
我在jQuery1.11中使用Backbone.js1.1.2 我想我遗漏了一些非常简单的东西 我设置了一个模型:Backbone.js Can';我们无法让主干网活动发挥作用,backbone.js,backbone-events,Backbone.js,Backbone Events,我在jQuery1.11中使用Backbone.js1.1.2 我想我遗漏了一些非常简单的东西 我设置了一个模型:联系人和一个集合:联系人列表 我成功地使用从ContactList.fetch() 但当我尝试在视图初始值设定项中绑定更改事件时: this.model.on('change', this.render, this); 。。。我得到: backbone Uncaught TypeError: Object #<Object> has no method 'on' 。。
联系人
和一个集合:联系人列表
我成功地使用从ContactList.fetch()
但当我尝试在视图初始值设定项中绑定更改事件时:
this.model.on('change', this.render, this);
。。。我得到:
backbone Uncaught TypeError: Object #<Object> has no method 'on'
。。。在声明绑定之前,在初始化函数的内部为ContactView
,但没有骰子
我需要做些什么才能让主干网。事件功能正常运行???
更新:所有相关代码(SAN模板)
var Contact=Backbone.Model.extend({
默认值:{
名字:'',
…[等]
},
初始化:函数(){
}
});
var ContactList=Backbone.Collection.extend({
型号:Contact,
url:“/api/Contacts/getall”
});
var ContactView=Backbone.View.extend({
初始化:函数(){
这个。render();
this.model.on('change',this.render,this);
},
渲染:函数(){
var template=35;.template($('#contact_template').html(),this.model);
这个.$el.html(模板);
}
});
var contactList=新联系人列表();
contactList.fetch({
成功:功能(收集、响应、选项){
contactList.models.forEach(功能(m){
变量$el=$(“”)
.addClass('adminItem clearfix')
.附于($(“#联系人列表”);
新的ContactView({el:$el,model:m.attributes});
});
}
});
这一行是故障源
new ContactView({ el: $el, model: m.attributes });
m.attributes
。要传递实际的模型对象:
new ContactView({ el: $el, model: m});
因为你应该能够把它简化为:
contactList.each(function (m) {
var $el = $('<li />')
.addClass('adminItem clearfix')
.appendTo($('#contactList'));
new ContactView({ el: $el, model: m});
});
联系人列表。每个功能(m){
变量$el=$(“”)
.addClass('adminItem clearfix')
.附于($(“#联系人列表”);
新的ContactView({el:$el,型号:m});
});
主干网型号。正如你所问的,如果他们不这样做,那将是愚蠢的。你确定这个.model
是一个主干.model
实例吗?@bejonbee:所以它一定是别的东西。我已经发布了更多的代码,您可能想考虑将标记名“li”,类名“adminItem clear fix”添加到ContactView
。然后var v=newcontactview({model:m})
和$('#contactList')。追加(v.render().el)
。我发现当视图完全拥有并控制自己的el
s时,我会过得更好。非常感谢。以前,当我将模型指定为那样时,我在获取要渲染的视图时遇到了问题。所以最后一点——我现在意识到了——必须传入this.model.attrbutes
而不是this.model
到unserscore的\模板
new ContactView({ el: $el, model: m});
contactList.each(function (m) {
var $el = $('<li />')
.addClass('adminItem clearfix')
.appendTo($('#contactList'));
new ContactView({ el: $el, model: m});
});