【问题标题】:Maximum call stack size exceeded in saving model collection backbone.js?保存模型集合backbone.js时超出了最大调用堆栈大小?
【发布时间】:2012-12-12 05:51:41
【问题描述】:

如何将模型数组发送到主干中的 Post API 方法?

我在我的 mvc 应用程序中使用了主干.js,我有一个场景,我必须将一个数组传递给我在 Rest API 中的 Post 方法。我正在尝试发送一组模型,然后调用 this.collection.create(model)。我试图将 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 方法中得到空数组。我将模型数组转换为 json 的方法是好的还是必须做其他事情。我已经尝试了几个解决方案,但无法理解。请指导

我正在尝试这个 solution

当控件涉及模型中的 toJSON 时。它给出了 Uncaught RangeError: Maximum call stack size exceeded。请指导


    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");
                    }
                }

【问题讨论】:

  • myArrayofModels 根本不是一个数组,它是一个字符串。

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


【解决方案1】:

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

this.collection.reset(e.models);

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

【讨论】:

  • 我已经编辑了我的问题和我面临的问题。我无法解决它。请指导某人
  • 如何填充“modelCollection”? self.collection.models 来自哪里?你在用铬吗?如果是这样,在您的开发工具中,转到网络 > 单击 post call > 单击标头并复制请求有效负载。将其粘贴到此处,以便我们查看。
  • 我在这里将我的收藏添加到我的模型中。我在创建模型实例并使用我拥有的模型数组(this.collection.models)填充该集合属性时定义了一个模型属性集合。实际上 this.collection 是我的集合,其中填充了我想发布到服务器的模型数组。所以指南?
  • 非常感谢!我一直在一遍又一遍地创建模型。我需要将它们添加到现有集合中
猜你喜欢
  • 2016-09-26
  • 1970-01-01
  • 2017-07-02
  • 2020-11-19
  • 2013-08-23
  • 2021-09-07
  • 2017-11-12
  • 2015-03-15
  • 1970-01-01
相关资源
最近更新 更多