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

时间:2013-08-03 10:39:46

标签: ember.js

我有这样的路线:

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

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

所以我的问题是什么是刷新此路线以查找具有new personId的记录的方法?

1 个答案:

答案 0 :(得分:2)

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

最简单的解决方案是使用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");
});