2014-02-27 63 views
1

我有一個骨幹模型,看起來像這樣主幹在模型URL中插入查詢字符串。我如何阻止它?

...

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

    return { address: Address } 

}); 

我有一個表格打印出一個地址的模板。該模板由在其「渲染」函數中傳遞地址標識的視圖呈現。這個視圖是通過像這個'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

有沒有人見過這種類型的行爲?我究竟做錯了什麼?

+0

你有沒有想過這個? – Sean

回答

0

正如mu說的那樣,表單是在Backbone獲得它之前提交給標準方式的。嘗試阻止提交操作:

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

    // same code as above 
    }