[英]How to reload current route in Ember.js?
在 Ember.js 我有 model 的路線。你能幫我嗎,當我在路線播放列表時如何重新加載這條路線(或將新數據設置為模型)由另一個 JS function 的回調調用? 我一直在尋找文檔,但對我沒有幫助。
App.PlaylistRoute = Ember.Route.extend({
setupController: function(controller, model) {
$.getJSON('api/playlist.php?' + Math.random().toString(36), function (data) {
controller.set('model', data);
});
}
});
非常感謝!
似乎答案中的解決方案對當前路線不起作用。 我遇到了同樣的問題,並在這里嘗試了解決方案並且有效。
http://discuss.emberjs.com/t/refresh-current-view-page-after-language-change/4291/5#post_5
在你的路線。
actions: {
sessionChanged: function() {
this.refresh();
}
}
並在你的控制器。
observeSession: function() {
this.send("sessionChanged");
}.observes("session.isAuthenticated"),
從控制器使用transitionToRoute
:
this.transitionToRoute('playlist', newModel);
從路線使用transitionTo
:
this.transitionTo('playlist', newModel);
例如,假設您在控制器上有操作
App.PlaylistController = Ember.ArrayController.extend({
actions: {
grabNewModel: function(){
//get some new model
this.transitionToRoute('playlist', newModel);
}
}
});
有兩種方法可以做到這一點。
一個是在播放列表路由中編寫一個動作並在其中調用this.refresh()有關更多信息,您可以訪問Ember Guide 刷新路徑的方法。
另一種方法是在您的控制器中,根據您需要重新加載路線使用情況
this.get('target.target.router').refresh();
這兩個中的任何一個都可以幫助您刷新路線。
以下來自ember指南的一小部分刷新方法:
刷新此路徑和任何子路徑上的模型,以類似於從其他路徑轉換時輸入路徑的方式觸發beforeModel,model和afterModel掛鈎。 當前路由參數(例如article_id)將被傳遞到相應的模型鈎子,如果返回不同的模型,setupController和相關的路徑鈎子也將重新激活。
當搜索如何刷新當前接受的答案已過時的路線時,此答案首先出現在谷歌上。 如果您確實需要刷新路由並從 controller 中的操作再次執行 model 掛鈎操作,請使用以下命令:
在路線中
@action
refreshModel() {
this.refresh();
}
為了在 controller 使用中調用此操作
this.send('refreshModel');
例如:
@action
performUpdate(event) {
event.preventDefault();
// Perform necessary action
this.send('refreshModel');
}
注意:這會將操作發送到調用它的 controller 的相應路由,並僅更新該路由和任何子路由。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.