2

我正在使用 Ember 开发一个简单的网络应用程序。我将嵌套资源呈现到应用程序模板中,而不是它的父资源。

这工作正常,除非我按下后退按钮,我回到父资源,但父模板没有呈现到应用程序出口中。我可以刷新页面并对其呈现宾果游戏。

路由器:

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 事件。但是您可以将 ember 设置为使用浏览器historyAPI,而不是使用hash默认的 API。这可以通过不同的方式来完成。例如像这样:

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

或者通过更简单的方法重新打开路由器,如下所示:

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

这种方式使用浏览器的后退和前进按钮将按预期工作。有关历史 API 的更多信息,请参见此处

希望能帮助到你

于 2013-06-07T20:18:26.200 回答