主干->无法调用方法'删除'的未定义

Backbone -> Cannot call method 'remove' of undefined

本文关键字:删除 未定义 方法 gt 主干 调用      更新时间:2024-03-09

我的应用程序是使用主干网构建的。当我试图在模型上使用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;
});

在您看来,为什么要调用model.destroy();?我认为您必须调用model.remove();,因为这是您要销毁的自定义方法。

在您的视图中,您似乎正在调用model.destroy()和更高版本的model.remove,但由于您已经破坏了模型,现在您正试图调用未定义对象的remove方法。