我正在尝试检查在实例化时传递给我的模型的值是否为空。如果是,则不应存储它们,也不应使用model.get('value')
模型实例化:
# Model
@latLongPicker = new Vamos.Models.LatLongPicker({
latitude : $('.latlongpicker .data input[name="campaign[latitude]"]').val(),
longitude : $('.latlongpicker .data input[name="campaign[longitude]"]').val(),
reach : $('.latlongpicker .data input[name="campaign[reach]"]').val()
}, { validate : true })
我的模型:
class Vamos.Models.LatLongPicker extends Backbone.Model
defaults :
reach : 5000
reachMin : 1000
reachMax : 10000
lattitude : 52.528239
longitude : 13.415677
initialize : ->
_.bindAll @
console.log @toJSON()
console.log @defaults
console.log @get 'reach'
validate : (attrs) ->
if attrs.reach == '' || attrs.reach == 0
return 'Reach cannot be zero or empty'
''
我可以看到我的模型已经过验证,但我的 console.log 告诉我“到达”是未定义的。
我假设当我的验证方法失败时,@get 'reach' 将返回默认值。我错过了什么?
对我来说,这样做的合乎逻辑的方法是验证模型中的所有内容,而不是在我将其传递给模型之前。
我可能错了,所以我在这里要求更好地了解我如何在 Backbone 中正确验证,或者我是否只是在做一些根本错误的事情。