2012-05-30 7 views
0

У меня есть коллекция: conditions. В представлении после возвращения ответа HTTP 403 ошибки, я хочу, чтобы явно не создать модель:Backbone.js пытается сохранить, когда передается обратный вызов?

var attributes = ...; 
conditions.create(attributes, { 
    error: function (model, response) { 
    conditions.trigger('error'); 
    var response = JSON.parse(response.responseText); 
    console.log(response); 
    } 
}); 

error обратного вызова вызывается правильно. Ответ регистрируется правильно. Но основа все еще добавляет (сломанную) модель к коллекции! Когда я смотрю на conditions.toJSON(), появляется новая модель с некоторыми сломанными атрибутами.

Я вернул ошибку с сервера, как я настаиваю на том, чтобы Backbone не добавлял новую модель в коллекцию?

Я могу сделать conditions.remove(model) в обратном вызове, но должен ли я?

ответ

6

Вы можете пройти {wait: true} до create.

Создание модели вызовет немедленное "add" событие, которое срабатывает по сбору, а также "sync" события после того, как модель была успешно создана на сервере. Передайте {wait: true}, если вы хотите дождаться сервера, прежде чем добавлять новую коллекцию в коллекцию.

http://documentcloud.github.com/backbone/#Collection-create

+0

Да. Я думаю, что лучший термин для этого (как указано в документах) заключается в том, что Backbone «оптимистичен» в отношении создания и синхронизации модели. – jmk2142

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