2012-12-10 60 views
0

我在我的mvc應用程序中使用backbone.js,我有一個場景,我必須將數組傳遞給Rest API中的Post方法。我想在我的模型中設置一個數組屬性,然後調用this.collection.create(model)。我使用的機型性能類似這樣的 如何將數組傳遞給post.example.collection.create中的方法?

defaults: { 
      Address: '', 
      City: '', 
      State: '', 
      Zip: '', 
      AddressArray: [] 
     } 
並試圖來電來郵方法
 
    e.models[0].set({ 'AddressArray': e.models}); 
    this.collection.create(e.models[0]); 
這裏e.models [0]是我的模型和e.models的對象是模型數組。 set屬性設置數組地址,但是在創建時會給出這個錯誤。

 
Uncaught TypeError: Converting circular structure to JSON

請指導。

+0

[「How」如何保存Backbone.js中的整個集合 - Backbone.sync或jQuery.ajax?](http://stackoverflow.com/questions/6879138/how-to-save-an-整個信息收集在骨幹JS-骨幹同步或 - jQuery的AJAX) – McGarnagle

回答

0

錯誤只是意味着你已經創建了一個自引用對象(例如不可能序列化爲JSON)。也就是說,你做的這相當於:

var x = {}; 
x['test'] = x; 
JSON.stringify(x); // TypeError: Converting circular structure to JSON 

你可以先創建模型的副本,使用toJSON,使對象不引用自身:

var json = e.models[0].toJSON(); 
json['AddressArray'] = e.models[0].attributes; 
this.collection.create(json); 

但這沒有引起太大的意義,因爲.attributes指模型的屬性,因此,所有你正在做的是AddressArray下創建模型的副本,即,如果模型是說{ prop: "val", prop2: "val2" },那麼你就這樣結束了:

{ 
    prop: "val", 
    prop2: "val2", 
    AddressArray: { 
     prop: "val", 
     prop2: "val2", 
    } 
} 

無論哪種方式,您都無法將引用自身的對象轉換爲JSON;並且需要序列化通過調用Collection.create將模型保存到服務器。

+0

嗨dbaseman你是對的。但實際上,我在Post方法中在服務器端發送客戶端模型陣列。請指導我如何將模型數組發送到Rest API的Post方法,因爲我對backbone.js沒有太多的瞭解。 – touseefkhan4pk

+0

@ touseefkhan4pk看到這個問題,其中接受的答案是創建另一個包含您的集合的模型,並覆蓋它的'toJSON'方法:http://stackoverflow.com/q/6879138/1001985 – McGarnagle