Chciałbym zapisać zmieniony model do bazy danych (wcześniej ustawione). Jeśli zapisanie powiodło się przekierowanie na inną stronę (na przykład może to być dowolna inna akcja).Jak zapisywać z backbone.js bez określania, które atrybuty, ale z oddzwonieniem
Model.save może mieć dwie opcjonalne właściwości. Pierwszy to skrót właściwości, a drugi to opcje (na przykład wywołanie zwrotne sukcesu i błędu). http://backbonejs.org/#Model-save
somemodel.set({foo: 'bar'});
//lots of other logic and misc steps the user has to do
somemodel.save(); //on success should go here
Ponieważ atrybuty są już ustawione, muszę tylko zwrotnego.
W przeszłości robiłam:
somemodel.save(somemodel.toJSON(), {
success: function() {
//other stuff
}
);
lub przekazując wartości ponownie do zapisywania metoda
somemodel.save(
{ foo: this.$('input').val()},
{ success: function(){}
);
szukam sposobu na to posprzątać. Dokumenty wskazują, model uruchomi stan zmiany, jeśli pojawią się nowe właściwości. Ale mimo to chciałbym przekierować użytkownika (zapis na nowej zawartości lub stary/niezmieniony).
to nie istnieje:
somemodel.on('success', function(){});
a to jest tylko do walidacji:
if(somemodel.save()) { //action }
również "sync" jest źle wydarzenie (ponieważ działa również zniszczyć)
Każda pomoc?
Dzięki, jest to zdecydowanie lepsze niż to, co miałem. Szkoda, że nadal czuje się trochę brudna (dostarczaj parampera, tylko po to, aby zapewnić mu parametry). Może powinienem zagłębić się głębiej i nadpisać/rozszerzyć Backbone.sync, aby przywrócić "sukces" i "błąd". Dziwne, że robi to domyślnie, ponieważ kręgosłup jest tak luźno powiązany ze zdarzeniami w przeciwieństwie do wywołań zwrotnych. – Jareish
{} i null to nie to samo w tym kontekście.{} oznacza wysłanie pustego obiektu do serwera, podczas gdy wartość null oznacza, że nie przekazujesz żadnego obiektu do zapisania(), a funkcja save() powinna wysyłać atrybuty obiektu. – jerzy
@jerzy To jest niepoprawne, proszę sprawdź Dokument kręgosłupa na 'model.save': pełna reprezentacja zasobu jest wysyłana do serwera, jeśli nie przekazujesz opcji' patch: true' http://backbonejs.org/# Zapisywanie modelu. {} i null będą miały to samo zachowanie – nikoshr