2013-09-11 3 views
0

это моя модельbackbonejs проверки на создание

Msg = Backbone.Model.extend({ 
     validate: function(attr){ 
      if(attr.msg === undefined || attr.msg === ''){ 
       return "empty messege"; 
      } 
     }, 
     initialize: function(){ 
      this.on('invalid',function(model,error){ 
       console.log(error); 
      }); 
     } 
}); 

и у меня есть коллекция из MSGS msgCollection
так, если я msgCollection.create({msg:''});
эта модель будет добавлена ​​в коллекцию
как я могу предотвратить это

+0

Это не должно произойти, из документации: «Если проверка на стороне клиента не удалось, модель будет неспасенный , с ошибками проверки. ". Только после сохранения модель добавляется в коллекцию: «добавление модели в набор после успешного создания». – GijsjanB

+0

@GijsjanB да, он не запускает запрос на отправку, но он все еще добавляет в коллекцию на стороне клиента. – SRN

+1

Я протестировал ваш код и на самом деле он добавляет модель (вопреки тому, что заставляют вас документировать;))! Вы можете передать {wait: true} в качестве опции, поэтому он не будет добавлять или вызвать collection.pop() из недопустимого прослушивателя событий. {wait: true} - это путь, так как недействительный прослушиватель событий можно вызвать также, когда вы не создаете модель и, следовательно, не хотите всплывать последний msg. – GijsjanB

ответ

1

Для справки!

Pass

{wait:true} 

в качестве опции при вызове создания:

msgCollection.create({msg:''}, {wait:true}); 
Смежные вопросы