Вложенное поведение маршрутизации для Ember.js

Может кто-нибудь объяснить поведение роутера и вложенных маршрутов в Ember.js?

Каковы итоговый URL, RouteName, Controller, Route и Template?

App.Router.map(function(){
    this.resource('profile');

    // URL: /profile
    // RouteName: profile
    // Controller: ProfileController
    // Route: ProfileRoute
    // Template: profile

    this.resource('artists', function(){

        // URL: /artists
        // RouteName: artists OR artists.index
        // Controller: ArtistsController OR ArtistsIndexController
        // Route: ArtistsRoute OR ArtistsIndexRoute
        // Template: artists OR artists/index

        this.resource('artists.artist', { path: ':artist_id' }, function(){

            // URL: /artists/:artist_id
            // RouteName: artists.index OR artist.index
            // Controller: ArtistsIndexController OR ArtistIndexController
            // Route: ArtistsIndexRoute OR ArtistIndexRoute
            // Template: artists/index OR artist/index

            this.resource('artist.tracks', function(){

                // URL: /artists/:artist_id/tracks
                // RouteName: artists.tracks OR artists.artist.tracks OR artist.tracks
                // Controller: ArtistsTracksController OR ArtistsArtistTracksController OR ArtistTracksController
                // Route: ArtistsTracksRoute OR ArtistsArtistTracksRoute OR ArtistTracksRoute
                // Template: artists/tracks OR artists/artist/tracks OR artist/tracks

                this.route('playing', { path: ':track_id' });

                    // URL: /artists/:artist_id/tracks/:track_id
                    // RouteName: tracks.index
                    // Controller: TracksIndexController
                    // Route: TracksIndexRouteRoute
                    // Template: tracks/index
            });
        });
    });
});

Если вы хотите увидеть весь код на моем githubhttps://github.com/Gerst20051/HnS-Wave/tree/master/src/stations

Файл JavaScript с моего githubhttps://github.com/Gerst20051/HnS-Wave/blob/master/src/stations/js/app.js

На это руководство я ссылаюсьhttp://emberjs.com/guides/routing/defining-your-routes/

И я скопировал структуру моего приложения из этогоhttps://github.com/inkredabull/sonific8tr

Заранее большое спасибо и помощь была бы оценена мной и всем сообществом emberjs в автобусе борьбы emberjs!

Ответы на вопрос(1)

Решение Вопроса

толькоartist вместоartists.artist.

Ваш соответствующий маршрутизатор будет,

App.Router.map(function() {
  this.resource('profile');
  this.resource('artists', function() {
    this.resource('artist', { path: ':artist_id'}, function() {
      this.resource('tracks', function() {
        this.resource('playing', { path: ':track_id' });
      })
    });
  });
});

Вы можете использоватьApp.Router.router.recognizer.names чтобы получить список маршрутов, отображаемых в маршрутизаторе.

Это даст вам следующие URL, маршруты и контроллеры.

/ профиль - ProfileRoute - ProfileController/ исполнители - ArtistsRoute - ArtistsController/ исполнители / 1 - ArtistRoute - ArtistController/ исполнители / 1 / песни - TracksRoute - TracksController/ исполнители / 1 / песни / 1 - PlayingRoute - PlayingController

Также обратите внимание, что каждый ресурс, имеющий вложенный ресурс, также получает неявный индексный маршрут. Например: - ArtistsIndexRoute, ArtistIndexRoute, TracksIndexRoute, но не PlayingIndexRoute, потому что у него нет вложенных маршрутов.

 Andy22 июл. 2013 г., 08:39
спасибо за быстрый ответ даршан! Я буду работать над этим больше завтра и дам вам знать, как это происходит.

Ваш ответ на вопрос