3

チケットのリストがあります。ルート「チケット」に行くと、それらのリストを表示します。最初のアイテムが自動的に選択されるようにします。ここでスタックオーバーフローで解決策を見つけましたが、うまくいきません。コードは次のとおりです。

window.App = Ember.Application.create();

App.Router.map(function() {
    this.resource('tickets', function() {
        this.resource('ticket', { path: ':ticket_id' });
    });
    this.resource('feedback');
});

App.TicketsRoute = Ember.Route.extend({
    model: function() {
        return App.Ticket.find();
    }, 
    redirect: function() {
        var ticket = this.modelFor('tickets').get('firstObject');
        this.transitionTo('ticket', ticket);
    }
});

初めてチケットルートにアクセスすると、最初のアイテムが選択されます。しかし、その後、別のルートに行き、チケットに戻ります。その後、次のエラーが発生します。

WARNING: The immediate parent route ('a') did not render into the main outlet and the    default 'into' option ('p') may not be expected

そして、マークアップがおかしくなり、アイテムのリストが表示されません (最初のチケットに関する詳細情報のみ)。エラーがわかりません。

前もって感謝します!

4

1 に答える 1

1

警告は、レンダリング中のテンプレートがその親でアウトレットを見つけられなかったためです。多分あなたはticket.hbsテンプレートを持っていると思いますが、ありませんtickets.hbsか? 理想的には、次のようにする必要があります。

// in tickets.hbs
{{#each ticket in tickets}}
  //ticket link
{{/each}}
{{outlet}}

// tickets/index.hbs
Please select a ticket from the list

// in ticket.hbs
// ticket details

説明については、 https://github.com/emberjs/ember.js/pull/1916#issuecomment-13669980を参照してください。

于 2013-05-26T02:41:31.970 に答える