Backbone在模型URL中插入查询字符串。我怎么阻止它?

时间:2014-02-27 19:38:49

标签: backbone.js backbone-views backbone-routing

我有一个看起来像这样的Backbone模型

...

  var Address = Backbone.Model.extend({
      urlRoot: '/address/'
  });

  return { address: Address }

});

我有一个模板打印出表单中的地址。模板由在其“render”函数中传递地址id的视图呈现。通过类似'address /:id'的路线到达视图。

视图如下所示:

var AddressView = Backbone.View.extend({
      el: $('#myclass'),

      render: function(options) {
        var that = this;

        var addr = new A.address({id: options.aid});

        addr.fetch({
            reset: true,
            success: function(address) {
              var template = _.template(ATemplate, {address: address});
              that.$el.html(template);
            }
        });

        return this;
      },

      events: {
        'submit .edit-address-form': 'editAddress'
      },

      editAddress: function(ev) {

        //serializeObject creates JSON object from form data
        var addressDetails = $(ev.currentTarget).serializeObject();

        addr.save(addressDetails, function(addr) {
            R.router.navigate('', {trigger: true});
        });
        return false;
      }
    });
  return {
      addressView: new AddressView()
  };

});

有两个问题。第一个问题是'editAddress'函数永远不会被调用,即使类名是正确的并且按钮类型=是'submit'。

第二个问题是当我提交地址表格时,URL是乱码,在基本URL和/#/地址之间插入查询字符串,如

HTTP:/// ldmanclient /地址= 2500 +莫菲特+图书馆及安培;地址2 =大学+ +加州%2C +伯克利&安培;城市=伯克利&安培;邮政编码= 94720&安培; mailcode = 6000&安培;援助= 1#/地址/ 1

之前有没有人见过这种行为?我做错了什么?

1 个答案:

答案 0 :(得分:0)

正如mu所说,在Backbone到达之前,表单是以标准方式提交的。尝试阻止提交操作:

  editAddress: function(ev) {
    ev.preventDefault();

    // same code as above
  }