2012-01-25 106 views
0

我有一个骨干模型,其中包含一个数组,我用一个简单的ID更新(我不想添加嵌套集合)。对象有一个相当简单的请求没有方法

对我来说这似乎相当直接,但由于某种原因,我得到Uncaught TypeError: Object [object Object] has no method 'preshow'错误。

我有一个类的列表和一个窗体与输入的类。 用户可以单击班级列表中的项目将其添加为正在编辑的班级的先决条件。这会在'ClassInput'视图中触发'add_prerequisite'。

我遗漏了我认为可能不需要的代码。

 
Myapp.ClassInput = Backbone.Views.extend({ 
     initialize: function(){ 
     Myapp.class = this.model; 
     Myapp.class.bind("add_prerequisite", this.add_prerequisite); 
     }, 
     add_prerequisite: function(prerequisite){ 
     // this is a method in my model which adds the prerequisite id to this class 
      class.add_prerequisite(prerequisite) 

     //this is the line triggering the error 
      this.show_pre(prerequisite); 
     }, 

     show_pre: function(prerequisite){ 
      alert(prerequisite); 
     } 

}); 

Myapp.Classes.ClassList = Backbone.Views.extend({ 


    add_prerequisite: function(){ 
     Myapp.class.trigger('add_prerequisite',this.model.id); 
    } 
}); 

回答

1

您需要将add_prerequisite的上下文绑定到您的骨干模型。

为了做到这一点,你只需要一个第三个参数添加到绑定方法

initialize: function() { 
    Myapp.class = this.model; 
    //bind the context of this.add_prerequisite to this 
    Myapp.class.bind('add_prerequisite', this.add_prerequisite, this); 
} 
+0

工作就像一个魅力保罗,谢谢。 – pedalpete

相关问题