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)
有两种方法可以做到这一点.
一个是在播放列表路由中编写一个动作并在其中调用this.refresh()有关更多信息,您可以访问Ember Guide 刷新路径的方法.
另一种方法是在您的控制器中,根据您需要重新加载路线使用情况
this.get('target.target.router').refresh();
Run Code Online (Sandbox Code Playgroud)
这两个中的任何一个都可以帮助您刷新路线.
以下来自ember指南的一小部分刷新方法:
刷新此路径和任何子路径上的模型,以类似于从其他路径转换时输入路径的方式触发beforeModel,model和afterModel挂钩.当前路由参数(例如article_id)将被传递到相应的模型钩子,如果返回不同的模型,setupController和相关的路径钩子也将重新激活.
从控制器使用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)
归档时间: |
|
查看次数: |
39929 次 |
最近记录: |