2012-05-14 16 views
10

Mam model kolekcji kręgosłupa (z podfolderami jako elementami) oraz widoki do edycji.Jak wyłączyć usługę Backbone.sync dla nowego modelu i ponownie włączyć synchronizację * po * użytkownik kliknął przycisk zapisywania

Chciałbym go, że gdy model został początkowo stworzony, aby „wyłączyć” synchronizację, więc z powrotem koniec nigdy nie jest wywoływana użytkownik kliknie na przycisk , następnie chciałbym „włączyć "Synchronizuj i wywołaj metodę zapisu w modelu głównym, aby zapisać ją w DB. Raz zapisany model powinien zachowywać się jak normalny model.

Celem jest uniknięcie zapisywania, dopóki użytkownik nie stwierdzi, że jest zadowolony z tego, co podał.

Odpowiedz

17

Szkielet początkowo wyszukuje lokalną funkcję modelu sync przed przejściem do Backbone.sync.

Backbone.js Documentation: Funkcja synchronizacji mogą być nadpisane w systemie jako Backbone.sync lub na poziomie bardziej drobnoziarnisty przez dodanie funkcji synchronizacji do odbioru sieci szkieletowej lub do poszczególnych kolumn.

Dlatego można to zrobić:

var MyModel = Backbone.Model.extend({ 
    // New instances of this model will have a 'dud' sync function 
    sync: function() { return false; } 
}); 

var MyView = Backbone.View.extend({ 

    ... 

    events : { 
     'click #my-button' : 'enableSync', 
     'click #my-save-button' : 'saveModel' 
    }, 

    enableSync: function() { 
     // If this view's model is still pointing to our fake sync function, 
     // update it so that it references Backbone.sync going forward. 
     if (this.model.sync !== Backbone.sync) { 
      this.model.sync = Backbone.sync; 
     } 
    }, 

    saveModel: function() { 
     // This won't actually do anything until we click '#my-button' 
     this.model.save(); 
    } 

    ... 

}); 

var view = new MyView({ model: new MyModel() }); 
+0

To była naprawdę szybka odpowiedź, dzięki! Cieszę się, że to takie proste. –

Powiązane problemy