Я добавил проверку для Модели и Коллекции, чтобы не получать модели, которые не действительны.(Кстати, я использую coffeescript, поэтому примеры приведены в coffeescript)
Кто-нибудь знает решение для этого?Следующее не работает
collection = new UserCollection
collection.fetch({
silent: true
success: ->
console.log('collection.models:', collection.models)
})
ОБНОВЛЕНИЕ 1
У меня много пользователей без номера мобильного телефона.
Коллекция пользователей:
class UserCollection extends Backbone.Collection
url: ->
app.routes.users_url
Модель пользователя:
class User extends Backbone.Model
idAttribute: '_id'
defaults: {
"email": null
"mobile": null
"loc": null
}
url: ->
app.routes.users_url + '/' + (@id || '')
validate: (attrs) ->
if !attrs.email
return "Email address must be provided"
if !attrs.name
return "Name must be provided"
if !attrs.mobile
return "Mobile number must be provided"
if @isNew() and attrs.password != undefined
if !attrs.password
return "Password must be provided"
if attrs.password != attrs.password_confirmation
return "Passwords do not match"
model: User
ОБНОВЛЕНИЕ 2
хорошо, я временно исправил это, взломав backbone.js.
Это происходит в функции _prepareModel
Я изменил эту строку:
if (model.validate && !model._performValidation(attrs, options)) model = false;
на эту строку:
if (!options.silent && model.validate && !model._performValidation(attrs, options)) model = false;
Это не решениетак что я держу этот вопрос открытым