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
Backbone.js:当使用集合获取时,本机将属性传递给模型_Backbone.js - Fatal编程技术网

Backbone.js:当使用集合获取时,本机将属性传递给模型

Backbone.js:当使用集合获取时,本机将属性传递给模型,backbone.js,Backbone.js,假设您正在定义一个Backbone.js模型。从我们的文档中 new Model([attributes], [options]) 这对于将一些默认属性传递给模型来说似乎很好。传递后,模型将自动继承这些属性及其各自的值。无事可做。太棒了 另一方面,假设我们有一个模型的集合 new Backbone.Collection([models], [options]) 好的,酷,我们可以传递一些初始模型和一些选项。但是,我没有初始模型,也没有需要通过的选项,所以让我们继续。我要从服务器上取模型 c

假设您正在定义一个Backbone.js模型。从我们的文档中

new Model([attributes], [options]) 
这对于将一些默认属性传递给模型来说似乎很好。传递后,模型将自动继承这些属性及其各自的值。无事可做。太棒了

另一方面,假设我们有一个模型的集合

new Backbone.Collection([models], [options])
好的,酷,我们可以传递一些初始模型和一些选项。但是,我没有初始模型,也没有需要通过的选项,所以让我们继续。我要从服务器上取模型

collection.fetch([options])
我没有任何选项,但我想传递一些属性,以便在获取每个模型时添加到模型中。我可以通过将它们作为选项传递,然后将它们添加到模型初始化中的属性散列中来实现这一点,但这看起来很混乱


是他们的主干.js本机方法吗?

您可以将属性作为选项传递给
获取
,并覆盖集合的
解析
方法,以扩展响应上传递的选项(属性)

解决方案如下所示:

var Collection = Backbone.Collection.extend({
  url:'someUrl',
  parse:function(resp,options) {
    if (options.attributesToAdd) {
      for (var i=0;i<resp.length;i++)
        _.extend(resp[i],options.attributesToAdd);
    }
    return resp;
  }
});

您可能需要稍微调整代码以使用
JSON
结构,但希望这能让您从正确的方向开始。

您可以将属性作为选项传递给
fetch
,并在集合中使用
parse
方法来设置模型上传递的选项(属性)。退房。很好的回答和解释,非常感谢!这是非常简单和直接的。但我很惊讶,我们不能只在主干集合上设置一个属性,然后将该属性传递给所有模型。
var collection = new Collection();

collection.fetch({
  attributesToAdd:{foo:'bar',more:'foobar'}
});