2014-01-19 4 views
0

Итак, у меня есть моя модель, которую я пытаюсь проверить, согласно книгам, это должно работать, однако я получаю attrs как неопределенный.Проверка базовой модели undefined attrs

validate: (attrs, options)-> 
    attrs 

если я иду вперед и сделать это таким образом:

validate: -> 
    this.attributes 

я могу получить доступ атрибуты модели просто отлично, однако я не думаю, что это рекомендуемый способ сделать это.

это мой код модели:

class Todo extends Backbone.Model 
    defaults: 
     title: 'default title' 
     completed: false 
    validate: (attrs, options)-> 
     attrs 
myTodo new Todo 
myTodo.validate() 
//returns false because attrs is undefined 

что мне не хватает?

ответ

1

От fine manual:

Validatemodel.validate(attributes, options)

[...] По умолчанию проверки вызывается перед save, но также может быть вызван до set{validate:true} если пройдена.

Таким образом, validate должен называться магистралью, а не непосредственно вами. Вы звоните validate себя:

myTodo.validate() 

но не проходит никаких аргументов так attrs является undefined, потому что, ну, вы не передать его значение.

Предполагается, что позвоните по телефону validate, когда вы позвоните myTodo.save() или myTodo.set(new_values, validate: true).

+0

Большое спасибо. Теперь это выглядит довольно очевидно! :) – estavillo

Смежные вопросы