2013-08-03 25 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

我試過這個解決方案,但這不起作用。過渡發生,但模型保持不變。 –