保存模型集合backbone.js超出了最大调用堆栈大小?

时间:2012-12-12 05:51:42

标签: jquery asp.net-mvc backbone.js

如何在骨干网中发送模型数组到Post API方法?

我在我的mvc应用程序中使用backbone.js,我有一个场景,我必须将数组传递给Rest API中的Post方法。我试图发送一个模型数组,然后调用this.collection.create(模型)。我试图将Post方法称为

     var ModelArray = Backbone.Model.extend({
                            urlRoot: av.api.patientInsuranceAddress,
                            toJSON: function () {
                                return this.collection.toJSON();
                            }
                        });

                        var modelCollection = new ModelArray(
                            {
                                collection: this.collection.models
                            });

                        modelCollection.save();

这里e.models是一个模型数组,我转换为json并调用Post方法,我想在Post方法上接收像这样的模型数组

public HttpResponseMessage Post(InsuranceAddressViewModel[] model)
{
return null;
}

但是我在Post方法中得到了null数组。我将模型数组转换为json的方法很好或者必须做其他事情。我尝试了几种解决方案,但无法理解。请指导

我正在尝试这个 solution

当控件来到模型中的toJSON时。它给出了Uncaught RangeError:超出了最大调用堆栈大小。请指导


    I am posting my code here 

       var PayerAddress = Backbone.Model.extend({
       urlRoot: av.api.patientInsuranceAddress,
       defaults: {
        Address: '',
        City: '',
        State: '',
        Zip: ''
     },
      toJSON: function () {
         return this.collection.toJSON();
      }

                     });

        var Payers = Backbone.Collection.extend({
       //url: av.api.patientInsuranceAddress,
     model: PayerAddress,

 });

       "Done": {
                    class: 'btn',
                    text: "Done",
                    click: function () {
                        payerName = self.$el.find('#Payer').val();

                        var ModelArray = Backbone.Model.extend({
                            urlRoot: av.api.patientInsuranceAddress,
                            toJSON: function () {
                                return this.collection.toJSON();
                            }
                        });

                        var modelCollection = new ModelArray(
                            {
                                collection: self.collection.models
                            });

                        modelCollection.save();
                        //self.closedialog();
                        $(this).dialog("close");
                    }
                }

1 个答案:

答案 0 :(得分:0)

您是否尝试将模型添加到现有集合中,或者您是否尝试使用一堆模型替换您的集合?如果后者使用:

this.collection.reset(e.models);

以下this.collection.create(myArrayofModels );'用于在集合中创建模型的新实例。在上面的示例中,您将粘贴一个字符串。然后Backbone尝试将该字符串作为模型添加到您的集合中。