Javascript 使用backbone.js将表单对象保存到模型
我在获取要发布的表单对象时遇到了问题,以下是我使用测试数据获得的结果,我正在获取setTarget.save未定义。我能够使用类似的结构成功地获得fetch/get调用 视图Javascript 使用backbone.js将表单对象保存到模型,javascript,backbone.js,Javascript,Backbone.js,我在获取要发布的表单对象时遇到了问题,以下是我使用测试数据获得的结果,我正在获取setTarget.save未定义。我能够使用类似的结构成功地获得fetch/get调用 视图 define([ 'jquery', 'underscore', 'backbone', 'text!templates/default/parent.html' ], function($, _, Backbone, parentTemplate) { var defaultView = Backbone.View.ex
define([
'jquery',
'underscore',
'backbone',
'text!templates/default/parent.html'
], function($, _, Backbone, parentTemplate) {
var defaultView = Backbone.View.extend({
initialize: function() {
$(this.el).html(parentTemplate);
this.render();
},
events: {
'click #busNext': 'showTarget'
},
showTarget: function() {
this.model.set({
businessName: $('#busInfoName').val(),
});
this.model.save();
},
render: function() {
this.setValidator();
return this;
}
});
return new defaultView;
});
模型
define([
'underscore',
'backbone'
], function(_, Backbone) {
var setTarget = Backbone.Model.extend({
initialize: function() {
console.log('set target initialize');
},
url: 'test.htm',
defaults: {
businessName: "",
businessPhone: ""
}
});
return setTarget;
});
收藏
define([
'jquery',
'underscore',
'backbone',
'models/setTarget'
], function($, _, Backbone, setTarget){
var target = Backbone.Collection.extend({
model: setTarget,
});
return new target;
});
路由器
define([
'jquery',
'underscore',
'backbone',
'validate',
'views/default/parent',
'models/setTarget',
'collections/target'
], function($, _, Backbone, validate, defaultView, setTarget, target) {
var AppRouter = Backbone.Router.extend({
routes: {
'': 'defaultAction',
'index': 'defaultAction',
},
defaultAction: function(actions) {
this.changePage(defaultView, 'fade');
},
changePage: function(page, pageTransition) {
$('body').append($(page.el));
$.mobile.changePage($(page.el), { changeHash: true, transition: pageTransition });
}
});
var initialize = function() {
var app_router = new AppRouter;
Backbone.history.start();
};
return {
initialize: initialize
};
});
谢谢你的评论,读了之后,我决定用另一种方式。我没有使用model.save,而是使用collectioninstancename.fetch方法,并在集合中覆盖了设置,因此它将POST而不是GET,并且似乎工作正常。单击后调试并检查视图中的“setTarget”对象。我想这不是一个主干。收藏?我试图给出一个答案,但在任何一步我都发现了一个新的问题。在您的示例代码中,有许多情况下您使用的是类,比如实例。您必须创建类的实例并使用实例,而不是类本身。您的RequireJS函数返回的是类而不是实例,您直接使用这些类而不实例化它们。不仅在
setTarget
中,也在parentTemplate
中……感谢您的回复,我更新了代码,还包括了路由器,我想我只是对如何设置模型感到困惑,希望您能有所了解。