繁体   English   中英

this.model不是函数

[英]this.model not a function

编辑我正在尝试销毁或设置或其他功能使用,但我的错误是

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(),
                });

            },

mikeapr4的假设是正确的。

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

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

因此,在您看来,当您调用this.model.destroy() ,它等效于调用Travel.destroy()并且由于Travel不是实例,而是构造函数,因此它将不起作用。

Backbone Collection确实为其model属性采用了模型构造函数,但是Backbone View需要一个实例。

您要么需要初始化视图并创建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
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM