Сначала - аннотированный источник - лучшее место, где можно найти ответы на вопросы о Backbone.
Глядя на источник для Backbone.sync
, вы можете увидеть, что модель сериализована с использованием JSON.stringify(model.toJSON())
(предполагается, что вы не используете emulateJSON
), поэтому переопределение этого метода должно достичь того, что вам нужно. Я не могу объяснить, почему это не работает для вас без сокращенного теста.
Более длинный ответ заключается в том, что для полного контроля над синхронизацией сервер-клиент вы должны написать собственную реализацию Backbone.sync. Метод довольно прост (см. Аннотированный источник), и вы можете просто обернуть исходную синхронизацию, если вы просто хотите внести простые изменения.
Например:
function mySyncFunction(method, model, options){
if(method == 'create' || method == 'update'){
options.contentType = 'application/json';
options.data = model.serializeForServer(); //You will need to write this method
}
return Backbone.sync(method, model, options);
}
Чтобы использовать пользовательский метод синхронизации, просто объявите его как часть вашей модели
var myModel = Backbone.Model.extend({
...
"sync": mySyncFunction,
...
});