2012-07-27 30 views
2

我的应用程序是使用骨干构建的。我试图在模型中使用的destroy()时遇到问题,这是错误堆栈我在Chrome中得到:骨干 - >不能调用方法'删除'未定义

Uncaught TypeError: Cannot call method 'remove' of undefined backbone-min.js:34 
f.extend.remove backbone-min.js:34 
g.Events.trigger backbone-min.js:9 
f.extend.destroy.d backbone-min.js:14 
f.extend.destroy backbone-min.js:14 
Backbone.Model.extend.remove ticketModel.js:21 
Backbone.View.extend.deleteTicket ticketListView.js:44 
b.each.b.forEach underscore-min.js:11 
Backbone.View.extend.deleteTicketTickets ticketListView.js:49 
f.event.dispatch jquery-1.7.2.min.js:3 
f.event.add.h.handle.i 

任何想法,这可能是?

导致错误的代码是从字面上只是:

model.destroy(); 

模型并确实包含一个模型作为console.log(model)记录对象到控制台,因为它应该。

这里的模型定义:

define([ 
    'apiEndpoint' 
    ],function(apiEndpoint) { 
    var TicketModel = Backbone.Model.extend({ 
     url: apiEndpoint.url, 

     isTicket : function(){ 
      return (this.type === 'ticket') ? true : false; 
     }, 

     isTask : function(){ 
      return (this.type === 'task') ? true : false; 
     }, 

     //Tells you if the view is selected for bulk actions 
     defaults : { 
      isSelected: false 
     }, 

     remove : function(){ 
      this.destroy({success: function(){ 
       console.log('success'); 
      }}); 
     } 

    }); 
    return TicketModel; 
}); 
+0

将相关代码添加到您的问题 – Esailija 2012-07-27 11:31:21

+0

做到了这一点。希望更清楚 – nimrod 2012-07-27 11:37:12

+0

我的意思是模型定义代码 – Esailija 2012-07-27 11:38:37

回答

0

在你看来,为什么你打model.destroy();?我认为你必须致电model.remove();,因为你的自定义方法是摧毁。

看起来像在你的视图中,你打电话给model.destroy()及其后的model.remove,但是因为你已经销毁了你的模型,现在你正试图调用一个未定义对象的移除方法。

+0

我不知道为什么你会觉得我在我的视图中调用model.destroy。 – nimrod 2012-07-27 13:52:09

+0

您这样写过:“导致错误的代码实际上只是: model.destroy();” – 2012-07-27 13:59:51

+0

好吧,我只是描述了什么不起作用,我从来没有说过我在视图中使用过它。但无论如何,如果回答你的问题,我不会再打两次。整个事情似乎是不可行的,我现在正在复制整个基础设施,看看问题是什么 – nimrod 2012-07-27 15:10:42