this.model 不是函数

this.model not a function

已编辑 我正在尝试使用 destroy 或 set 或其他函数,但我的错误是

Uncaught TypeError: this.model.destroy is not a function

看起来代码没有错误

我的代码

define(['jquery',
    'underscore',
    'backbone',
    'handlebars',
    '/resources/app/models/TravelModel.js',
    ], function ($, _, Backbone, Handlebars, Travel) {

     var addAdminPanelView = Backbone.View.extend({

            el:$(".page"),
            model:Travel,
            events:{
                'click #editButton':'editEvent',
            },

            deleteEvent:function(){

                this.model.destroy(),
                });

            },

正确。

您的 Travel 模型可能(并且应该)是这样的:

define(['Backbone'], function(Backbone) {
    return Backbone.Model({
        // ...
    });
});

所以在您看来,当您调用 this.model.destroy() 时,它等同于调用 Travel.destroy() 并且它不会起作用,因为 Travel 不是一个实例,而是一个构造函数。

Backbone 集合确实为其 model property 采用模型构造函数,但 Backbone 视图需要一个实例。

您需要初始化视图并创建一个 Travel 实例。

// Uppercase since it's a type, not an instance.
var AddAdminPanelView = Backbone.View.extend({
    el: $(".page"),
    events: {
        'click #editButton': 'editEvent',
    },

    // initialize the view with a Travel instance
    initialize: function() {
        this.model = new Travel();
    },

    deleteEvent: function() {
        this.model.destroy(),
    }
});

或者传递一个 Travel 实例作为视图构造的选项。

var travelInstance = new Travel();

var view = new AddAdminPanelView({
    model: travelInstance
});