是否可以更新当前路线的网址中的动态参数,而无需重新创建路线视图?
具体来说,假设我有一条处理post/:post_id
的路线。此路线的视图显示具有给定id
的帖子,但(以无限滚动样式)还允许用户平滑地向下滚动到后续帖子。我想更新网址以反映他们目前正在查看的帖子。如果我调用reaplceWith('post', newlyFocusedPost)
renderTemplate
挂钩,我的原始视图将被销毁,呈现新视图,并且平滑性将丢失。
我喜欢Backbone.js的相当于:
router.navigate('posts/123', {navigate:false, replace:true});
另一个解决方案是,如果将相同的模板渲染到同一个插座中,则重用现有视图并更新其绑定。
(我目前的解决方案是使用一个子路由postAtId
来处理没有视图的动态ID以及对controllerFor('post').set('content', newPost)
的调用
答案 0 :(得分:2)
当只有上下文发生变化时重新渲染可能是一个错误。有一个pull request可以解决这个问题。
但是也可以通过覆盖renderTemplate
在您自己的路线中解决此问题,以便它只在第一次进入路线后立即渲染。例如:
App.MyRoute = Ember.Route.extend({
activate: function() {
this.needsToRender = true;
},
renderTemplate: function() {
if (this.needsToRender){
this.needsToRender = false;
render();
}
}
});