javascript - tutorial - Cómo deshabilitar Backbone.sync para un nuevo modelo y volver a habilitar la sincronización*después*de que el usuario presione el botón Guardar
template underscore (1)
Backbone inicialmente buscará la función de sync
local de un modelo antes de ir a Backbone.sync
.
Documentación de Backbone.js : la función de sincronización puede ser anulada globalmente como Backbone.sync, o en un nivel más detallado, agregando una función de sincronización a una colección de Backbone oa un modelo individual.
Por lo tanto, puedes hacer esto:
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() });
Tengo un modelo de colección Backbone (con submodelos como elementos) y vistas para editarlo.
Me gustaría que cuando el modelo se crea inicialmente, para "desactivar" la sincronización, de modo que nunca se invoque la parte de atrás hasta que el usuario haga clic en un botón, entonces me gustaría "encender" la sincronización e invocar el guardado método en el modelo raíz, para guardarlo en el DB. Una vez que un modelo se guardó, debería comportarse como un modelo normal.
El objetivo es evitar el ahorro hasta que el usuario determine que está contento con lo que ha ingresado.