2013-02-20 2 views

Antwort

99

Bitte, die ab 1.11.0 Hinweis, this.route wird nur statt this.resource verwendet. Quelle: http://guides.emberjs.com/v1.11.0/routing/defining-your-routes/ *

Werfen Sie einen Blick auf diese post für eine ausführliche Erklärung.

Dies ist eine grobe Zusammenfassung dieser Post (i ein wenig geändert haben): sie

Seit der Änderung eine Menge Leute Ressourcen- und Route ist verwirrt über die Bedeutung der beide und wie Auswirkung auf die Benennung Hier ist der Unterschied:

  • Ressource - ein Ding (ein Modell)
  • Route - etwas mit der Sache

Dies bedeutet also, einen Router zu tun, eine Route und Ressource mit aussehen könnte wie folgt aus:

App.Router.map(function() { 
    this.resource("posts", { path: "/" }, function() { 
    this.route("new", { path: "/new" }); 
    }); 
    this.route("another", { path: "/another" }); 
}); 

Dies würde in den folgenden Strecken führen erstellt/verwendet:

  • PostsRoute, Posts, PostsView
  • PostsIndexRoute, PostsIndexController, PostsIndexView
  • PostsNewRoute, PostsNewController, PostsNewView
  • AnotherRoute, AnotherController, AnotherView

Wie wir aus diesem Beispiel sehen, Ressourceneffekt die Benennung der Controller, Routen und Ansichten, die verwendet/erstellt werden (die "neue" Route wird als untergeordnete Ressource "posts" behandelt). Zitieren von der ursprünglichen Quelle (i es geändert, weil es als Patrick M richtig darauf hingewiesen, in den Kommentaren irritierend war):

Das bedeutet, wenn Sie eine Ressource erstellen wird es eine brandneue Namespace erstellen. Dieser Namespace ist nach der Ressource benannt und alle untergeordneten Routen werden darin eingefügt.

Update: komplexeres Beispiel mit verschachtelten Ressourcen

Betrachten Sie das folgende komplexeres Beispiel mit mehreren verschachtelten Ressourcen:

App.Router.map(function() { 
    this.resource("posts", { path: "/" }, function() { 
    this.route("new", { path: "/new" }); 
    this.resource("comments", { path: "/comments" }, function() { 
     this.route("new", { path: "/new" }); 
    }); 
    }); 
    this.route("another", { path: "/another" }); 
}); 

In diesem Fall wird die Ressource comments einen brandneuen Namespace erstellt.Dies bedeutet, dass die resultierenden Routen in diesem Fall die folgenden sein werden. Wie Sie sehen können, haben Route, Controller und View für die Kommentarressource nicht den Namen der übergeordneten Route. Das bedeutet, dass das Verschachteln einer Ressource in einer anderen Ressource den Namespace zurücksetzt (= erstellt einen neuen Namespace).

  • PostsRoute, Posts, PostsView
  • PostsIndexRoute, PostsIndexController, PostsIndexView
  • PostsNewRoute, PostsNewController, PostsNewView
  • CommentsRoute, CommentsController, CommentsView
  • CommentsNewRoute, CommentsNewController, CommentsNewView
  • AnotherRoute, AnotherContro ller, AnotherView

Dieses Verhalten wird auch in der Ember Docs erläutert.

+4

Dies sollte in den Ember-Anleitungen deutlicher sein. Dieses Konzept hat mich anfangs sicherlich verwirrt. –

+0

Ausgezeichnete Zusammenfassung eines ausgezeichneten Beitrags. Aber das letzte Zitat, das du eingibst, ergibt keinen Sinn: 'Dieser Namespace wird ein" was [...] "haben. Was bedeutet das" "? Ist es nur ein Platzhalter für Route | Controller | Aussicht? –

+0

Hey Patrick, danke, dass du darauf hingewiesen hast. Ich konnte keinen Hinweis mehr darauf machen. Daher habe ich ein komplexeres Beispiel mit verschachtelten Ressourcen hinzugefügt. Ich denke, diese Stelle bezog sich auf dieses Szenario. – mavilein

Verwandte Themen