2

私は Ember を使用して単純な Web アプリに取り組んでいます。親リソースではなく、ネストされたリソースをアプリケーション テンプレートにレンダリングしています。

戻るボタンを押して親リソースに戻る場合を除いて、これは正常に機能しますが、親テンプレートはアプリケーション アウトレットにレンダリングされません。ページを更新してビンゴにすると、レンダリングされます。

ルーター:

Movies.Router.map(function () {
  this.resource('list', { path: '/list' }, function() {
    this.route('add');
    // Nested resource example
    this.resource('movies', { path: '/:list_id/movies' }, function() {
    });
  });

  this.route('boxoffice');
});

映画ルート:

Movies.MoviesRoute = Ember.Route.extend({
  model: function(params) {
    return Movies.List.find(params.list_id);
  },

  renderTemplate: function() {
    this.render('movies', {
      // template outlet to render into (will mess up your back btn!)
      into: 'application'
    });
  }
});

前もって感謝します!

4

1 に答える 1

2

デフォルトでは、ember ルーターはブラウザのハッシュを使用してアプリケーションのルートをロードし、同期を維持します。これは、ブラウザに存在する hashchange イベントに依存しています。historyただし、デフォルトの代わりにブラウザー APIを使用するように ember をセットアップできhashます。これは、さまざまな方法で実現できます。たとえば、次のようにします。

App.Router = Ember.Router.extend({
  location : Ember.Location.create({
    implementation : 'history' // can be hash, history or none
  })
});

または、次のようにルーターを再度開くことによる、より単純なアプローチによって:

App.Router.reopen({
  location: 'history'
});

このようにブラウザの戻るボタンと進むボタンを使用すると、期待どおりに機能します。history API の詳細については、こちらを参照してください。

それが役に立てば幸い

于 2013-06-07T20:18:26.200 に答える