Cómo sobrescribir el metodo save del Modelo en Backbone JS

Author Top
enzo

Backbone JS permite crear una aplicación de Javascript para conectarse a un API existente sobre una interfaz JSON REST.

Backbone define algunos estados REST para operar sobre los modelos por ejemplo:

  • Model Fetch: GET
  • Model New: POST
  • Model Update: PUT

Pero es posible nuestra API no implementa todos los Estados REST, por ejemplo Drupal 8 (versión en desarrollo) no implementa aun el método PUT para salvar Entidades Drupal.

En su lugar el estado REST PATCH es utilizado por Drupal para guardar los modelos.

Así que si tratamos de actualizar un modelo en Backbone se ejecutará una llamada Ajax usando el método PUT  como se puede ver en el siguiente fragmento de código

Node = Backbone.Model.extend({
        initialize: function(){
            alert("Welcome to this world");
        }
    });

var node = new Node({ id: 1, title: 'Node Sample in Backbone'});

node.save(userDetails, {
    success: function (user) {
        alert(user.toJSON());
    }
})

Si usted es un desarrollador Drupal te darás cuenta de la modelo no coincide con la estructura de Entidades en Drupal con los valores de lenguaje y deltas, pero sólo quiero mostrar una simple lógica de salvar un modelo Backbone.

Ahora permítanme mostrarte cómo podemos sobrescribir el método guarda del modelo Backbone.

Node = Backbone.Model.extend({
        initialize: function(){
            alert("Welcome to this world");
        },
        save: function(attrs, options) {
          options.patch = true;
          // Proxy the call to the original save function
          Backbone.Model.prototype.save.call(this, attrs, options);
        }
    });

var node = new Node({ id: 1, title: 'Node Sample in Backbone'});

node.save(userDetails, {
    success: function (user) {
        alert(user.toJSON());
    }
})

Ahora nuestro modelo se ejecutará una petición Ajax usando el método de PATCH.

He utilizado esta técnica para habilitar en la biblioteca Backbone.Drupal el envío de modelos a Drupal 8 utilizando el método REST PATCH.

Espero que hayas encontrado esta entrada del blog útil.