Heim > Web-Frontend > js-Tutorial > Wie kann man in EmberJS effektiv mehrere Modelle auf derselben Route laden?

Wie kann man in EmberJS effektiv mehrere Modelle auf derselben Route laden?

Susan Sarandon
Freigeben: 2024-10-30 09:58:27
Original
627 Leute haben es durchsucht

How to Effectively Load Multiple Models on the Same Route in EmberJS?

EmberJS: Laden mehrerer Modelle auf derselben Route

Bei der Verwendung von EmberJS kann es vorkommen, dass Sie mehrere nicht verwandte Modelle laden müssen die gleiche Route. Dies kann verwirrend sein, insbesondere wenn Sie mit clientseitigen MVC-Frameworks noch nicht vertraut sind.

Achtung:

Bevor Sie versuchen, mehrere Modelle zu laden, beachten Sie Folgendes:

  • Ladet die Route dynamische Daten basierend auf einem URL-Slug (z. B. /books/:id)? Wenn ja, laden Sie nicht mehrere Modelle aus dem Modell-Hook, da dadurch der Modell-Hook übersprungen und das bereitgestellte Modell verwendet werden kann, was möglicherweise zu Problemen führt.

Gegebenenfalls mehrere Modelle laden:

Wenn die Route keine dynamische URL hat, können Sie mehrere Modelle über den Modell-Hook der Route zurückgeben. Zum Beispiel:

App.IndexRoute = Ember.Route.extend({
  model: function() {
    return {
           model1: ['red', 'yellow', 'blue'],
           model2: ['green', 'purple', 'white']
    };
  }
});
Nach dem Login kopieren

Laden mehrerer Modelle mit Versprechen:

Wenn das Abrufen von Daten Versprechen beinhaltet, können Sie die RSVP.hash-Methode im Modell-Hook verwenden:

App.IndexRoute = Ember.Route.extend({
  model: function() {
    return Ember.RSVP.hash({
           model1: promise1,
           model2: promise2
    });
  }
});
Nach dem Login kopieren

Modelle mit Ember-Daten laden:

Wenn Sie Ember-Daten verwenden, finden Sie mehrere Modelle im Modell-Hook:

App.IndexRoute = Ember.Route.extend({
  var store = this.store;
  model: function() {
    return Ember.RSVP.hash({
           cats: store.find('cat'),
           dogs: store.find('dog')
    });
  }
});
Nach dem Login kopieren

Alternativer Ansatz (besser geeignet für die Handhabung dynamischer Routen):

Anstatt mehrere Modelle aus dem Model-Hook zu laden, können Sie die Hooks setupController oder afterModel verwenden, um Modelleigenschaften auf dem Controller festzulegen:

Setup-Controller-Methode:

App.IndexRoute = Ember.Route.extend({
  model: function(params) {
    return $.getJSON('/books/' + params.id);
  },
  setupController: function(controller, model){
    this._super(controller,model);
    controller.set('model2', {bird:'is the word'});
  }
});
Nach dem Login kopieren

Nach-Modell-Methode:

App.IndexRoute = Ember.Route.extend({
  model: function(params) {
    return $.getJSON('/books/' + params.id);
  },
  afterModel: function(){
    var self = this;
    return $.getJSON('/authors').then(function(result){
      self.set('authors', result);
    });
  }, 
  setupController: function(controller, model){
    this._super(controller,model);
    controller.set('authors', this.get('authors'));
  }
});
Nach dem Login kopieren

Dieser Ansatz stellt sicher, dass die Modelle korrekt sind verfügbar im setupController-Hook, wo Sie sie sicher Controller-Eigenschaften zuweisen können.

Das obige ist der detaillierte Inhalt vonWie kann man in EmberJS effektiv mehrere Modelle auf derselben Route laden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage