Выполнив эту строку:
var myCollection = new Collection([{id: 'smith'}]);
Вы создаете новую коллекцию с одной моделью. Все модели, переданные в конструкторе, будут добавлены в коллекцию. Каждая добавленная модель проверяется.
Детали:
- Backbone.Collection конструктор вызова
this.reset()
(source).
.reset()
беззвучно добавит все модели в коллекцию (source).
.add()
будет вызывать внутренние ._add()
для каждой модели (source).
- Внутренний
._add()
позвонит .prepareModel
, который проверяет, действительна ли модель (source).
Update (на основе редактирования в вопросе):
model.validate
выполняется только если модель не является экземпляром Backbone.Model
(source).
Так что, если вы создаете коллекцию, используя
var myCollection = new Collection([{id: 'smith'}]);
то модель экземпляр Object
. Но если вы используете:
var myCollection = new Collection([ new Model({id: 'smith'}) ]);
то модель экземпляр Backbone.Model
и проверка пропускается.
yes thats, что я думал, поэтому я делаю 'myCollection.reset ([{id: 'smith'}]);' - http://jsfiddle.net/5a3k/QSeH6/17/ .. но проверять все еще огни .. – zack
@zack: См. Подробности в ответе. Конструктор вызывает '.reset()', который добавляет и проверяет модель. Если вы вызываете '.reset()' самостоятельно, вы также запускаете проверку - только 1-й шаг в списке деталей пропускается. – kubetz
спасибо, извините за плохо сформулированный вопрос - см. Править – zack