Backbone.js Can';我们无法让主干网活动发挥作用

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' 。。

我在jQuery1.11中使用Backbone.js1.1.2

我想我遗漏了一些非常简单的东西

我设置了一个模型:
联系人
和一个集合:
联系人列表

我成功地使用从
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});
        });