Harap Perhatikan bahwa mulai 1.11.0 dan seterusnya, this.route
hanya digunakan sebagai pengganti this.resource
. Sumber: http://guides.emberjs.com/v1.11.0/routing/defining-your-routes/ *
Lihat posting ini untuk penjelasan rinci.
Ini adalah ringkasan kasar dari posting ini (saya telah mengubah sedikit):
Sejak peralihan ke resource dan rute, banyak orang yang bingung tentang arti keduanya dan bagaimana pengaruhnya terhadap penamaan. Inilah perbedaannya:
- sumber daya - sesuatu (model)
- rute - ada hubungannya dengan benda itu
Jadi ini berarti router yang menggunakan rute dan sumber daya mungkin terlihat seperti ini:
App.Router.map(function() {
this.resource("posts", { path: "/" }, function() {
this.route("new", { path: "/new" });
});
this.route("another", { path: "/another" });
});
Ini akan menghasilkan rute berikut yang dibuat / digunakan:
- PostsRoute, PostsController, PostsView
- PostsIndexRoute, PostsIndexController, PostsIndexView
- PostsNewRoute, PostsNewController, PostsNewView
- AnotherRoute, AnotherController, AnotherView
Seperti yang kita lihat dari contoh ini, sumber daya mempengaruhi penamaan Pengendali, Rute dan Tampilan yang digunakan / dibuat (Rute "baru" diperlakukan sebagai bawahan sumber daya "pos"). Kutip dari sumber aslinya (saya memodifikasinya, karena menjengkelkan seperti yang ditunjukkan Patrick M dengan benar di komentar):
Ini berarti setiap kali Anda membuat sumber daya, itu akan membuat namespace baru. Namespace itu dinamai sumber daya dan semua rute anak akan dimasukkan ke dalamnya.
Update: contoh yang lebih kompleks dengan resource bersarang
Pertimbangkan contoh yang lebih kompleks berikut dengan beberapa sumber daya bersarang:
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" });
});
Dalam hal ini, sumber daya comments
membuat namespace baru. Ini berarti rute yang dihasilkan dalam kasus ini adalah sebagai berikut. Seperti yang Anda lihat, Route, Controller dan View untuk sumber daya komentar tidak diawali dengan nama rute induk. Itu berarti menumpuk sumber daya dalam sumber daya lain menyetel ulang namespace (= membuat namespace baru).
- PostsRoute, PostsController, PostsView
- PostsIndexRoute, PostsIndexController, PostsIndexView
- PostsNewRoute, PostsNewController, PostsNewView
- CommentsRoute, CommentsController, CommentsView
- CommentsNewRoute, CommentsNewController, CommentsNewView
- AnotherRoute, AnotherController, AnotherView
Perilaku ini juga dijelaskan di Ember Docs .