Pregunta

Tengo el siguiente código:

  initialize: function() {
    _.bindAll(this);

    var callBack = function(res) {
      window.item = new Item(res);
      this.render();
    };

    _.bind(callBack, this);

    $.get('/item/parse', {
      uri: decodeURIComponent($.urlParam('uri')),
      title: decodeURIComponent($.urlParam('title'))
    },
      callBack
    );
  },

La intención es que Render () debe llamarse después de que finalice la función $ .get. Sin embargo, incluso después de vincular la función de devolución de llamada con _.bind, todavía obtengo "el objeto no tiene ningún renderizado" en la consola. ¿Estoy usando BIND incorrectamente aquí?

¿Fue útil?

Solución

_.bind Devuelve una nueva función, entonces:

callBack = _.bind(callBack, this);

También puedes usar _.bindAll, pero tienes que llamarlo después Defines la función. De lo contrario, no hay funciones en el momento en que llame _.bindAll. Tenga en cuenta que tiene que usar this.callBack = ... en ese caso, porque de lo contrario this No consistirá en ninguna función.

Usando ambos _.bind y _.bindAll es superfluo.

Otros consejos

Por lo general, escribo un método de 'Carga' en mi modelo que doy una devolución de llamada como parámetro. Luego llamo a este método desde el método render () en la vista y hago lo que sea necesario en la función de devolución de llamada (por supuesto, esa devolución de llamada se activa en el modelo después de que se han cargado los datos).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top