2014-01-19 84 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

驗證model.validate(attributes, options)

[...]默認情況下驗證save之前被調用,但也set之前如果{validate:true}傳遞被調用。

所以validate是由Backbone調用,而不是由您直接調用。你打電話validate自己:

myTodo.validate() 

但不傳遞任何參數,以便attrsundefined,因爲,你沒有通過它的價值。

當您撥打myTodo.save()myTodo.set(new_values, validate: true)時,您應該讓Backbone呼叫validate

+0

非常感謝你。現在感覺很明顯! :) – estavillo