6

我有这样的路线:

App.PeopleRoute = Ember.Route.extend({
  model: function()
  {
    return App.Persons.find(personId);
  }
});

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

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

4

1 回答 1

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");
});
于 2014-01-26T10:10:22.183 回答