Jaka jest różnica między trasą a zasobem w interfejsie API nowego routera?

Próbuję zrozumieć różnicę między Route a Resource. Sposób, w jaki Rozumiem Resource pomaga ustawić ścieżki podrzędne obiektu Route na inny obiekt Route. Ale nie jest jasne, kiedy myślę o domyślnym mapowaniu nazw dzieje się również dla ścieżek.

Author: thecodejack, 2013-02-20

1 answers

Należy pamiętać, że począwszy od wersji 1.11.0, {[2] } jest używany tylko zamiast this.resource. Źródło: http://guides.emberjs.com/v1.11.0/routing/defining-your-routes/*

Zobacz ten post, aby uzyskać szczegółowe wyjaśnienie.

To jest przybliżone podsumowanie tego postu (trochę zmodyfikowałem):

Od czasu zmiany zasobów i trasy Wiele osób jest mylić o znaczeniu tych dwóch i jak wpływają one na nazewnictwo. Oto różnica:

  • zasób-rzecz (model)
  • route-something to do with the thing
Oznacza to, że router korzystający z trasy i zasobów może wyglądać tak:
App.Router.map(function() {
  this.resource("posts", { path: "/" }, function() {
    this.route("new", { path: "/new" });
  });
  this.route("another", { path: "/another" });
});

Spowoduje to utworzenie/wykorzystanie następujących tras:

  • PostsRoute, PostsController, PostsView
  • PostsIndexRoute, PostsIndexController, PostsIndexView]}
  • PostsNewRoute, PostsNewController, PostsNewView
  • AnotherRoute, AnotherController, AnotherView

Jak widzimy na tym przykładzie, zasób wpływa na nazewnictwo używanych/tworzonych kontrolerów,tras i widoków ("nowa "trasa jest traktowana jako podległa zasobowi" posts"). Cytuję z oryginalnego źródła (zmodyfikowałem, bo irytowało, jak zauważył Patryk M. w komentarzach): {]}

Oznacza to, że za każdym razem, gdy tworzysz zasób, tworzysz zupełnie nowy przestrzeń nazw. Że nazwa przestrzeni nazw pochodzi od zasób i wszystkie ścieżki potomne zostaną do niego wstawione.

Aktualizacja: bardziej złożony przykład z zagnieżdżonymi zasobami

Rozważ następujący bardziej złożony przykład z wieloma zagnieżdżonymi zasobami:

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

W tym przypadku zasób comments tworzy zupełnie nową przestrzeń nazw. Oznacza to, że powstałe trasy w tym przypadku będą następujące. Jak widać trasa, kontroler i widok dla zasobu komentarzy nie są poprzedzone nazwą trasy nadrzędnej. oznacza to, że zagnieżdżenie zasobu w innym zasobie resetuje przestrzeń nazw (=tworzy nową przestrzeń nazw).

  • PostsRoute, PostsController, PostsView
  • PostsIndexRoute, PostsIndexController, PostsIndexView]} PostsNewRoute, PostsNewController, PostsNewView]}
  • CommentsRoute, CommentsController, CommentsView
  • CommentsNewRoute, CommentsNewController, CommentsNewView
  • AnotherRoute, AnotherController, AnotherView
To zachowanie jest również wyjaśnione w Ember Docs .
 101
Author: mavilein,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-05 04:57:11