2017-05-03 2 views
0

Ich bin vertraut mit, wie dieser in JS verwendet wird.ember routes, worauf bezieht sich "das"?

Das Beispiel von den Ember docs für die Erstellung von Routen ist:

Router.map(function() { 
this.route('about', { path: '/about' }); 
this.route('favorites', { path: '/favs' }); 
}); 

Ihre Erklärung ein wenig zu wünschen übrig lässt:

„Wenn Karte() aufrufen, sollten Sie eine Funktion übergeben, das wird Mit dem Wert wird dieser auf ein Objekt gesetzt, mit dem Sie Routen erstellen können. "

Welches Objekt? Ein globales Router-Objekt?

Antwort

1

Wenn Sie ausdrucken this oder wenn Sie den Code debuggen, werden Sie sehen, dass this innerhalb map Methode in der Tat ist eine Instanz von DSL Objekt. Es ist in der API versteckt; Was wirklich vorkommt, ist das; Ember.Router erstellt eine Instanz von DSL und generiert entsprechende Pfadübereinstimmungen über dieses Objekt und übergibt sie an die eigentliche router gekapselt von Ember.Router selbst. Natürlich behandeln wir in unserer App nur Ember.Router und wissen nicht über die Details anderer Klassen. Wenn Sie interessiert sind, können Sie den Quellcode von den Links, die ich zur Verfügung gestellt habe, verfolgen (das habe ich vor einer Woche für einige Arbeiten getan).

1

Ja. Wie du schon sagtest, es ist Router Objekt. Das ist in der Datei router.js definiert. aber wir werden keine Eigenschaften innerhalb map Funktion verwenden.

Wir können Eigenschaften und seine Methoden in Router verwenden, wie die unten ich demonstrierte didTransition Callback, die nützlich ist Callback nach dem Abschluss abgeschlossen.

const Router = Ember.Router.extend({ 
    location: config.locationType, 
    rootURL: config.rootURL, 
    myService:Ember.inject.service(),  
    didTransition() { 
     this._super(...arguments); 
     console.log(' After all the router transition complete ', ...arguments); 
     //if you override anywhere didTransition dont forget to return true to allow chain to reach here 
     return true; 
    } 
}); 
Verwandte Themen