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
});
已编辑 我正在尝试使用 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
});