2

ネストされたリソースが、ルートだけでなく、ルート名にパス階層をリストする必要がある理由を誰かが説明できますか?

例えば。リソース1 > リソース1.リソース2

Emberjs は、コード量の削減がすべてのようです。リソースをこのように定義する必要がある理由を説明するリソースのユースケースはありますか?

私の例を jsfiddle または jsbin で動作させることができなかったので、ここでホストしました: http://emberjs.mattmazzola.net/

私は、この同様の StackOverflow の質問で説明されている手法に基づいてソリューションを作成しました: Ember.js pre4 複数のネストされたルーティング

基本的に、サブリソース「cats」と「dogs」を持つリソース「animals」があることがわかります。ただし、それぞれに「cats」と「dogs」という名前を付けると、ルーターは「routeanimals.cats」が見つからないと言います。次に、「animals」を追加すると。ネストされたルート 'animals.cats' を作成するためのプレフィックス url は index#/animals/animals.cats になり、意味がありません. もちろん、path 属性をオーバーライドすることでこれを修正しますが、なぜ Emberjs がそうしないのかわかりません.デフォルトでこれを行う. リソース/ルートを正しく定義していませんか?これは副次的な影響ですか?

言い換えれば、私は現在これをやっています:

App.Router.map(function() {
    this.resource('products', function() {
        this.route('desktops');
        this.route('laptops');
    });
    this.resource('animals', function() {
                // the url for this route is bad, but default behavior?
        this.resource('animals.cats', function() {
            this.route('cat', {path: ':cat_id'});
        });
        // Why does this require stating the parent route 'animals' again?
        this.resource('animals.dogs', {path: 'dogs/'}, function() {
            this.route('dog', {path: ':dog_id'});
        });
    });

});

次のようなルートを書くにはどうすればよいですか:

App.Router.map(function() {
    this.resource('products', function() {
        this.route('desktops');
        this.route('laptops');
    });
    this.resource('animals', function() {
        this.resource('cats', function() {
            this.route('cat', {path: ':cat_id'});
        });
        this.resource('dogs', function() {
            this.route('dog', {path: ':dog_id'});
        });
    });
});
4

1 に答える 1

0

うーん、2 番目のバージョンはApp.AnimalsIndexRouteApp.CatsIndexRouteApp.DogsIndexRoute(およびおそらく他のいくつかの Ember.Routes) が正しく定義されている場合に機能するはずです。まだ問題がある場合は、残りのコードをここに投稿するか、jsfiddle に投稿できますか?

于 2013-03-25T16:59:38.807 に答える