2013-08-03 24 views
6

我有一个这样的路线:如何动态更新Ember.Route模型?

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

其中PERSONID被异步地加载和灰烬是外部的正常JavaScript变量。现在,当显示路线时,它将获取当前的PersonId并显示正确的数据。但是当我更改personId的值时,它不更新视图。

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

+0

我可能会找到一种方法来做到这一点,但在此之前,你能告诉我为什么你要这样做吗?你可能试图做一些在Ember.js中更容易完成的事情。 –

+0

@tarasm是正确的,如果你发现自己在与框架做斗争,而不是开箱即用,那么你应该重新思考你的方法,因为肯定有更好的方法来实现你所需要的。尝试更详细地描述您的用例,我相信我们可以帮助您... – intuitivepixel

回答

2

这是因为model挂钩仅在通过URL为具有动态段的路由输入时执行。阅读更多关于它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"); 
}); 
+0

我试过这个解决方案,但这不起作用。过渡发生,但模型保持不变。 –