2014-04-16 19 views
0

我有一個如下定義的Backone JS模型;Javascript控件表單域發佈到服務器

var Class = BaseModel.extend({ 
     idAttribute: "classId", 
     urlRoot: "api/class", 
     defaults: { 
      "person": null, 
      "classUrl": null, 
      "classId": null 
     } 
}  

這裏人本身實際上是一個具有2個屬性的對象/類; personName,personId

我有一個UI窗體,它有2個字段;

  1. 下拉(稱爲PERSONNAME):用戶可以從選項列表
  2. 文本框(稱爲classUrl)

在我的JS代碼,我設置的JSON如下選擇;

var myJSON = { 
     person : new Person(
      { 
      "personId": $('#personName option:selected').data('personid'), 
      "personName": this.$('#personName').val() 
      } 
     ), 
     classUrl: this.$('#classUrl').val() 
} 

然後我做;

this.model.save(myJSON, { 
url: 
success: 
} 

然而,獲取發佈的JSON看起來像;

{ 
person:, 
classUrl: 
personName: 
} 

我不希望發佈額外的personName(對應於下拉列表)。

我想補充,我也有一個叫上任何表單域的變化做驗證changeAction。但是我在這裏;

changeAction: function (event) { 
    var self = this; 
    var target = event.target; 
    var change = {}; 

    target.value = $.trim(target.value); 
    change[target.name] = target.value; 

    var tpmModel = this.model; 
    tpmModel.set(change); 

    var check = tpmModel.validateItem(target.id); 
    if (check.isValid === false) { 
    self.addValidationError(target.id, check.message); 
    } else { 
    self.removeValidationError(target.id); 
    } 
} 

我該如何處理?

回答

0

當你需要指定要使用主幹模型發佈的內容,你需要使用「數據」的保存方法內。它告訴主幹使用{}內的指定數據向服務器發送一些內容。 喜歡這個。

this.model.save(data: {"parameter1":"parameter1" 
    ,"parameter2":"parameter2" }) 

或者

this.model.save(data: JSON.stringify(personObject)) 
+0

這並不提供答案的問題。要批評或要求作者澄清,請在其帖子下方留言。 – Ravimallya

+1

當然你是對的,我的不好。我會改進我的答案。 \ 0 / – rcarvalho

相關問題