backbone-js:如何静默初始化一个新的集合

backbone-js: how can I silently initialize a new Collection?

本文关键字:一个 集合 初始化 何静默 静默 backbone-js      更新时间:2023-09-26

我一定在做一些愚蠢的事情,或者可能缺少 Backbone 文档的某些关键部分,但我不明白为什么当我以这种方式初始化新集合时会触发 Model.validate 函数:http://jsfiddle.net/5a3k/QSeH6/..有什么想法我哪里出错了吗?

编辑:更改标题

通过执行此行:

var myCollection = new Collection([{id: 'smith'}]);

使用一个模型创建新集合。构造函数中传递的所有模型都将添加到集合中。将验证每个添加的模型。

详:

  1. Backbone.Collection 构造函数正在调用this.reset()(源(。
  2. .reset()将以静默方式将所有模型添加到集合(源(中。
  3. .add()将调用每个模型(源(的内部._add()
  4. 内部._add()将调用.prepareModel,该正在检查模型是否有效(源(。

更新(基于问题中的编辑(:

仅当模型不是Backbone.Model(源(的实例时,才会执行model.validate

因此,如果您使用

var myCollection = new Collection([{id: 'smith'}]);

那么模型就是Object的实例。但是,如果您使用:

var myCollection = new Collection([ new Model({id: 'smith'}) ]);

然后模型是Backbone.Model的实例,并跳过验证。