2

誰かが 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
            });
        });
    });
});

私の github ですべてのコードを見たい場合https://github.com/Gerst20051/HnS-Wave/tree/master/src/stations

私の github からの JavaScript ファイルhttps://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 コミュニティ全体に感謝します。

4

1 に答える 1

3

ネストされたルートのドット表記を削除する必要があります。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.namesRouter でマッピングされているルートのリストを取得するために使用できます。

これにより、次の URL、ルート、およびコントローラーが得られます。

  • /profile - ProfileRoute - ProfileController
  • /artists - ArtistsRou​​te - ArtistsController
  • /artists/1 - アーティストルート - アーティストコントローラー
  • /artists/1/tracks - TracksRoute - TracksController
  • /artists/1/tracks/1 - PlayingRoute - PlayingController

また、ネストされたリソースを持つ各リソースも、暗黙的なインデックス ルートを取得することに注意してください。例:- ArtistsIndexRoute、ArtistIndexRoute、TracksIndexRoute ですが、ネストされたルートがないため、PlayingIndexRoute は含まれません。

于 2013-07-22T06:03:27.263 に答える