Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 如何将参数传递给Backbonejs模型';通过collection.push添加模型时是否初始化函数?_Backbone.js_Parameter Passing - Fatal编程技术网

Backbone.js 如何将参数传递给Backbonejs模型';通过collection.push添加模型时是否初始化函数?

Backbone.js 如何将参数传递给Backbonejs模型';通过collection.push添加模型时是否初始化函数?,backbone.js,parameter-passing,Backbone.js,Parameter Passing,所以我有以下问题: 我有这样的收藏: MyApp.ArticleCollection = Backbone.Collection.extend({ model: MyApp.ArticleModel, /** * Fire func1-Event */ func1: function () { ... } }); 在ajax调用中是这样填充的: self.

所以我有以下问题:

我有这样的收藏:

 MyApp.ArticleCollection = Backbone.Collection.extend({

        model: MyApp.ArticleModel,

        /**
         *  Fire func1-Event
         */
        func1: function () {
            ...
        }
    });
在ajax调用中是这样填充的:

self.collection.push(articleFromService);
现在我的问题是:创建模型时需要两个不同的数据集

  • 案例A:这是一篇新文章。它应该有一个填充了所有可能对象的对象数组(例如,从XS到XXXL或类似的大小,其实并不重要)
  • 案例二:文章需要修改。在本例中,本文为数组选择了一些值(例如大小:XS,L,XL),我需要对这些值进行评估,以便预填充editform
到目前为止,这是我的模型的初始化方法:

         /**
         *  init Articlemodel
         */
        initialize: function () {
            this.dc = MyApp.DataCollector.getInstance(); //just a ring.js-class for caching data on clientside
                this.set('Sizes', this.dc.sizes != null ? this.dc.sizes : this.dc.getValuesFromArticleFilter()); //needed for there are different "standard sizes"-arrays. 
        },
但我想要实现的是这样的,使用布尔开关:

         /**
         *  init Articlemodel 
         */
        initialize: function (isEditMode) {
            this.dc = MyApp.DataCollector.getInstance();
            if (!isEditMode) {
                this.set('Sizes', this.dc.sizes != null ? this.dc.sizes : this.dc.getValuesFromArticleFilter());
            }
        },

因此,现在我很遗憾地不知道如何将参数
isEditMode
传递给我在将其推入集合时初始化的每个模型。

如果将选项对象传递给
。push
(或
.add
)集合将把该选项对象传递给它创建的每个新模型

考虑

该代码将记录两次
bar
(从每个型号的
initialize
中记录一次)


有了这些知识,您可以将您的
isEditMode
作为选项传递给
self.collection.push(articleFromService)
并在模型的initialize中访问它,就像我访问上面的
foo
选项一样。

您应该能够将一个options对象传递给
。push
,然后该options对象应该依次传递给每个已创建模型的
initialize
函数。因此,我认为我在这里遗漏了一些明显的东西,但是。。。如何将其从集合传递到所创建模型的初始化函数?
var Model = Backbone.Model.extend({
  initialize: function(attributes, options) {
    console.log(options.foo);
  }
});

var Collection = Backbone.Collection.extend({
  model: Model
});

var myCollection = new Collection();
myCollection.push([
  { id: 1 },
  { id: 2 }
], { foo: 'bar' });