如何在Ember.js中重新加载当前路线?

hon*_*mer 32 javascript ember.js

在Ember.js我有模特的路线.你能帮我吗,当我在路线播放列表上如何重新加载这个路线(或设置新数据到模型)时,从另一个JS函数回调调用?我一直在寻找文档这么久,但对我没有帮助.

App.PlaylistRoute = Ember.Route.extend({
 setupController: function(controller, model) {
  $.getJSON('api/playlist.php?' + Math.random().toString(36), function (data) {
   controller.set('model', data);
  });
 }
});
Run Code Online (Sandbox Code Playgroud)

非常感谢!

Ats*_*ima 74

似乎答案中的解决方案对当前路线不起作用.我遇到了同样的问题,并在这里尝试了解决方案并且有效.

http://discuss.emberjs.com/t/refresh-current-view-page-after-language-change/4291/5#post_5

在你的路线.

actions: {
  sessionChanged: function() {
    this.refresh();
  }
}
Run Code Online (Sandbox Code Playgroud)

并在你的控制器.

observeSession: function() {
  this.send("sessionChanged");
}.observes("session.isAuthenticated"),
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是我试过这个并没有任何反应.我没有在路线上使用任何模型,我只需要它来重新渲染; 但似乎没什么用. (4认同)

Sum*_*mit 9

有两种方法可以做到这一点.

一个是在播放列表路由中编写一个动作并在其中调用this.refresh()有关更多信息,您可以访问Ember Guide 刷新路径的方法.

另一种方法是在您的控制器中,根据您需要重新加载路线使用情况

this.get('target.target.router').refresh();
Run Code Online (Sandbox Code Playgroud)

这两个中的任何一个都可以帮助您刷新路线.

以下来自ember指南的一小部分刷新方法:

刷新此路径和任何子路径上的模型,以类似于从其他路径转换时输入路径的方式触发beforeModel,model和afterModel挂钩.当前路由参数(例如article_id)将被传递到相应的模型钩子,如果返回不同的模型,setupController和相关的路径钩子也将重新激活.

  • 请注意,它是`this.get('target.router').refresh()`.此外,在路由上调用`refresh`似乎刷新了正在刷新的路由的父路由和子路由(因此刷新一直冒泡到应用程序路由). (2认同)

Kin*_*n2k 8

从控制器使用transitionToRoute:

this.transitionToRoute('playlist', newModel);
Run Code Online (Sandbox Code Playgroud)

从路线使用transitionTo:

this.transitionTo('playlist', newModel);
Run Code Online (Sandbox Code Playgroud)

例如,假设您在控制器上有操作

App.PlaylistController = Ember.ArrayController.extend({
 actions: {
   grabNewModel: function(){
     //get some new model
     this.transitionToRoute('playlist', newModel);
   }
 }
});
Run Code Online (Sandbox Code Playgroud)

  • ^^这是一个糟糕的解决方案.它会起作用,但是会破坏Ember的一个主要目的,那就是为你处理所有这些废话.如果这个新记录应该是多个集合,该怎么办?上述解决方案需要深入了解新记录需要插入的每个位置,而简单地重新加载路径将自动处理所有内容.此外,如果客户端尚未拥有服务器上的新记录,我们只是想确保我们有新数据?或者,如果路径的模型是具有多个记录或集合的哈希? (2认同)
  • 无论何时写出答案,目前这是一个糟糕的解决方案.如上所述,它将起作用,并且在当时可能是唯一的选择,但不再是一个好的解决方案.我也没有向你或你的答案投票,所以只是冷静.:) (2认同)