Ember:后退按钮坏了

时间:2013-06-07 20:11:23

标签: javascript ember.js

我正在使用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'
    });
  }
});

提前致谢!

1 个答案:

答案 0 :(得分:2)

默认情况下,ember路由器使用浏览器的哈希来加载应用程序的路由并保持同步。这依赖于浏览器中存在的hashchange事件。 但您可以将ember设置为使用浏览器history API而不是默认的hash。这可以用不同的方式完成。例如:

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

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

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

这种方式使用浏览器返回&前进按钮可以按预期工作。 有关历史记录API的详细信息,请参阅here

希望有所帮助