Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用backbone.js将表单对象保存到模型_Javascript_Backbone.js - Fatal编程技术网

Javascript 使用backbone.js将表单对象保存到模型

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

我在获取要发布的表单对象时遇到了问题,以下是我使用测试数据获得的结果,我正在获取setTarget.save未定义。我能够使用类似的结构成功地获得fetch/get调用

视图

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
中……感谢您的回复,我更新了代码,还包括了路由器,我想我只是对如何设置模型感到困惑,希望您能有所了解。