Я пробую Backbone.js, и одна из вещей, которые я пытаюсь сделать, - это вызвать удаленный API, поэтому я должен иметь возможность переопределить Backbone.sync, насколько я понимаю документацию .
В самой документации нет примера того, как это сделать, и, похоже, нет группы Google для Backbone ... кто-нибудь может привести пример для этого?
javascript
backbone.js
Picardo
источник
источник
Ответы:
Взгляните на этот пример с аннотированным источником, где они перезаписывают
Backbone.sync
альтернативой localalstorageмагистральная-LocalStorage
По сути, Backbone.sync должна быть функцией, которая принимает 4 аргумента:
Вы должны стрелять
options.success
или вoptions.error
зависимости от того,method
удалось ли . Методы в формате:"create"
: ожидается, что вы создадите модель на сервере"read"
: ожидается, что вы прочитаете эту модель с сервера и вернете ее"update"
: ожидается, что вы обновите модель на сервере с аргументом"delete"
: ожидается, что вы удалите модель с сервера.Вам нужно реализовать эти 4 метода и определить, что вы хотите для вашего
"server"
Конечно, это только то, что
Backbone.sync
нужно реализовать. Вы можете реализовать больше,methods
и вы можете передать больше параметров,success
но лучше этого не делать.Лучше убедиться, что он делает то же самое, что
Backbone.sync
и в настоящее время, так что ваше программирование для интерфейса, а не для реализации. Если вы хотите заменить свой модифицированный,Backbone.sync
скажем, localStorage, вам не нужно расширять его самостоятельно, чтобы он соответствовал вашему расширенному Backbone.sync "[Редактировать]
Также обратите внимание, что вы можете использовать несколько реализаций
sync
. Каждое упоминаниеBackbone.sync
является(this.sync || Backbone.sync)
действительным, так что вам просто нужно сделать что-то вроде:Backbone.sync
это просто глобальная по умолчанию, которую используют все модели, если только в моделях не установленsync
специально определенный метод.источник
(this.sync || Backbone.sync)
Смотрите редактировать. Еще один совет - прочитать аннотированный источник основы. Это все там!sync
из любого места в вашем коде (обычно переопределенноеsync
), просто сделайте aBackbone.sync.call(this, method, this, options)
.Я знаю, что этот ответ немного запоздал, и ответ от @Raynos отличный, но я сделал это немного по-другому, и, возможно, он будет полезен для вас или любого другого человека, пытающегося использовать API с Backbone.
Вместо переопределения Backbone.sync я переопределил Backbone.ajax , потому что именно там делается запрос ajax.
Вот пример:
источник
Обычно мне нужно переопределить
sync
метод магистрали, когда мне нужно только синхронизировать определенные атрибуты. Типичная реализация выглядит следующим образом:источник
Backbone.sync.apply(this, arguments);
? Это немного более гибко, если вы, например, решите опустить аргумент «options» в переопределенной версииsync
.Backbone.model.save(attributes, {patch: true})
для частичного обновления сейчас