如何动态更新Ember.Route模型?

Tom*_*ski 6 ember.js

我有这样的路线:

App.PeopleRoute = Ember.Route.extend({
  model: function()
  {
    return App.Persons.find(personId);
  }
});
Run Code Online (Sandbox Code Playgroud)

其中personId是异步加载的,是Ember之外的普通JavaScript变量.现在,当显示路径时,它将获取当前的PersonId并显示正确的数据.但是当我更改personId的值时,它不会更新视图.

所以我的问题是什么是刷新这条路线以查找新personId记录的方法?

shi*_*ime 2

这是因为model仅当通过 URL 输入具有动态段的路由时才会执行钩子。在这里阅读更多相关信息。

最简单的解决方案是使用transitionTo.

App.PeopleRoute = Ember.Route.extend({
  model: function(params)
  {
    return App.Persons.find(params.personId);
  },
  actions: {
    personChanged: function(person){
       this.transitionTo("people", person);
    }
  } 
});

App.PeopleController = Em.Controller.extend({
  observeID: function(){
     this.send("personChanged");
  }.observes("model.id");
});
Run Code Online (Sandbox Code Playgroud)