骨干模型验证未定义的attrs

时间:2014-01-19 06:20:35

标签: javascript backbone.js coffeescript

所以我得到了我正在尝试验证的模型,根据这应该有用的书籍,但是我接受的是未定义的。

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 个答案:

答案 0 :(得分:1)

来自fine manual

  

验证 model.validate(attributes, options)

     

[...]默认情况下,{strong>验证会在save之前调用,但如果传递set,也可以在{validate:true}之前调用。

所以validate意味着被Backbone调用,而不是由你直接调用。你自己打电话给validate

myTodo.validate()

但未传递任何参数,因此attrsundefined,因为您没有传递其值。

当您致电validatemyTodo.save()时,您应该让Backbone拨打myTodo.set(new_values, validate: true)