#backbone.js #tastypie
#backbone.js #типичный
Вопрос:
У меня есть веб-приложение, которое использует серверную часть Django / Tastypie с интерфейсом Backbone / Marionette. Я хотел бы использовать массовые операции Tastypie для создания нескольких объектов через мой API с использованием запроса ИСПРАВЛЕНИЯ к конечной точке списка.
Насколько я понимаю, Backbone это не поддерживает. Каков наилучший способ добавить это в Backbone? Я предполагаю, что мне нужно будет добавить метод сохранения в объект коллекции Backbone и расширить метод синхронизации Backbone.
Ответ №1:
If instead, you'd only like the changed attributes to be sent to the server, call
model.save(attrs, {patch: true}). You'll get an HTTP PATCH request to the server
with just the passed-in attributes.
Скрипка Отправляет запрос на исправление при синхронизации магистральной коллекции:
$(function() {
Backbone.$ = $;
var User = Backbone.Model.extend({
urlRoot: "/testUrl",
isNew : function () { return false; },
defaults: {
name: 'John Doe',
age: 25
}
});
var user1 = new User();
var user2 = new User();
var user3 = new User();
var user4 = new User();
var UserCollection = Backbone.Collection.extend({
model: User,
url: "/testUrl"
});
var userCollection = new UserCollection([ user1, user2, user3]);
// update
user1.set('name','Jane Doe');
user4.set('name','Another User');
// delete
userCollection.remove(user2);
// add
userCollection.add(user4);
userCollection.sync('patch', userCollection , { error: function () {
console.log(userCollection); } });
});
Комментарии:
1. Я говорю о коллекциях, а не о моделях. Базовые коллекции не имеют готового метода сохранения.
2. Я не был полностью осведомлен о параметрах, доступных через аргументы Backbone.sync. Мне это нравится! Я попробую это сделать и сообщу об этом. Спасибо!
3. Мне все еще нужно изменить объект Backbone.sync, чтобы соответствовать ожиданиям Tastypie для запроса ИСПРАВЛЕНИЯ к конечной точке списка. В частности, приведенные здесь ожидания: django-tastypie.readthedocs.org/en/latest /…
4. @Erik кажется таким после прочтения вашей ссылки. Я больше сосредоточился на стороне backbone. Я не уверен, но github.com/PaulUithol/backbone-tastypie может оказаться полезным.
5. В итоге я использовал пользовательский запрос Backbone.ajax к конечной точке списка, чтобы отправить запрос на ИСПРАВЛЕНИЕ в формате, приемлемом для Tastypie. Размещение коллекции. fetch() в хэше успеха вызова ajax, похоже, помогает мне двигаться дальше. Спасибо за вашу помощь!