2012-01-17 8 views

Respuesta

4

intentar algo como esto, podría no ser la mejor solución, pero funciona:

 

var parentSyncMethod = Backbone.sync; //save parent method, the override 
Backbone.sync = function() { 
    // Your code here. 
    var parentSyncMethod.apply(Backbone, arguments); 
}; 
 

espero que ayude de alguna manera

1

Backbone.prototype.sync.call no funcionará porque sync no está definido en el prototipo. Inspeccione el objeto Backbone en la consola para ver su estructura. Querrá ponerle otro nombre a su propio método o guardar una referencia al método original sync antes de anularlo con su propia implementación.

9

Por lo que entiendo, Backbone.sync comprueba para ver si hay una versión definida localmente de sincronización y pide que antes de llamar al Backbone.sync mundial:

(this.sync || Backbone.sync) 

Por lo tanto, dado que el modelo es algo como TestModel. Creo que se puede hacer algo como esto (perdono, mi esto podría no ser la sintaxis correcta, javascript está lejos de mi especialidad):

var TestModel = Backbone.Model.extend({ 

    "sync": function(method, model, options) { 
     //Some custom code 

     Backbone.sync(method, model, options); 
    } 
}); 

Esto es lo que he reunido de here y here

+3

He utilizado este enfoque antes y he encontrado que funciona bien, especialmente si necesita una sincronización específica del modelo. Alterar Backbone.sync directamente (como se muestra en otra respuesta) afectará a todos los modelos, que pueden no ser lo que necesita. – erturne

4
var TestModel = Backbone.Model.extend({ 
    sync: function(method, model, options){ 
     // some code here 
     return Backbone.sync(method, model, options); 
    } 
}); 
Cuestiones relacionadas