Проверка базовой модели

Я столкнулся со странным поведением проверки модели в Backbone.js.

Когда модель создается впервые, например,

var foo = new Foo({
    bar: 42
});

Backbone вызывает foo.set () , передавая в качестве параметра заданную карту {bar: 42} , как можно видеть из источника . При этом он также передает параметры {silent: true} , как в строке

this.set(attributes, {silent : true});

. Это имеет смысл, поскольку наличие silent === true позволяет избежать запуска ] change событий, которые не имеют смысла в данном контексте.

По какой-то причине я не могу понять, silent === true также предотвращает проверку ; см. источник в строке

if (!options.silent && this.validate && !this._performValidation(attrs, options)) return false;

Таким образом, похоже, что модель никогда не проверяется при создании, но обычно это происходит при изменении некоторых атрибутов. Более того, наличие проверки неразрывно связано с действием отправки событий изменения , что является чем-то полностью ортогональным.

Кто-нибудь может объяснить, почему это так? Каким будет чистый и перспективный способ решения этой проблемы?

Я мог бы вручную вызвать _performValidation , но у этого есть два недостатка:

  • во-первых, это то, что я могу просто забыть
  • во-вторых, _performValidation не является частью API и, возможно, он изменится в будущих выпусках.

5
задан Andrea 18 January 2012 в 18:23
поделиться