Wie zeige ich einen Spinner, während ich auf eine AJAX-Anfrage in Mithril JS warte?

Ich verwende Mithril JS in einem Projekt und habe Probleme, genau zu verstehen, wie man sich in den Ajax-Lebenszyklus einfügt. Zum Beispiel, wenn ich eine Ajax-Anfrage habe, möchte ich einen Spinner zeigen. Ziemlich einfach, aber ich kann nicht herausfinden, wie das passieren kann.

Ich möchte den gleichen Container für den Spinner verwenden wie den Inhalt, nach dem die Ajax-Anfrage sucht.

Hier ist mein Setup:

var Thing = function (data) {
  var p = m.prop;
  this.title = p(data.title);
  this.timestamp = p(moment.unix(data.timestamp));
}

Thing.list = function(options) {
  m.request({method: "GET", url: "/things.json", type: Thing, background: true});
};

MyApp.components.thingsList = {
  controller: function ThingListController() {
    this.things = m.prop([]);
    Thing.list().then(this.things).then(m.redraw);
  },

  view: function thingListView(ctrl) {
    return m('div#thing-tab', [
      m('ul#things', [
        ctrl.things().map(thingView)
      ])
    ]);
  }
};

function thingView(thing) {
  ...some view stuff...
}

Ich habe es so gemacht, wie ich es will, aber ich kann einfach nicht herausfinden, wie ich mich in den Ajax-Lebenszyklus einklinken kann. Auch hier möchte ich nur einen Spinner anzeigen, wenn die Anfrage startet, und diesen dann durch das Ergebnis der Ajax-Anfrage ersetzen.

Jede Hilfe wird sehr geschätzt!

Vielen Dank,

Antworten auf die Frage(2)

Ihre Antwort auf die Frage