Frage

Ich habe den folgenden Code:

  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
    );
  },

Die Absicht ist, dass Render () nach Abschluss der $ .get -Funktion aufgerufen werden sollte. Selbst nach der Bindung der Rückruffunktion mit _.bind erhalte ich in der Konsole immer noch "Objekt hat keine Funktionsrenderin". Verwende ich Bind hier fälschlicherweise?

War es hilfreich?

Lösung

_.bind Gibt eine neue Funktion zurück, also:

callBack = _.bind(callBack, this);

Sie können auch verwenden _.bindAll, aber du musst es nennen nach Sie definieren die Funktion. Andernfalls gibt es zum Zeitpunkt, an dem Sie anrufen _.bindAll. Beachten Sie, dass Sie verwenden müssen this.callBack = ... in diesem Fall, weil sonst this wird nicht aus Funktionen bestehen.

Verwenden von beiden _.bind und _.bindAll ist überflüssig.

Andere Tipps

Normalerweise schreibe ich eine "Load" -Methode auf mein Modell, die ich einen Rückruf als Parameter habe. Dann nenne ich diese Methode aus der Render () -Methode in der Ansicht und mache alles, was ich in der Rückruffunktion tun muss (natürlich wird dieser Rückruf im Modell ausgelöst, nachdem die Daten geladen wurden).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top