Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js:避免在url动态段更新时重新输入(并重新呈现)当前路由_Ember.js - Fatal编程技术网

Ember.js:避免在url动态段更新时重新输入(并重新呈现)当前路由

Ember.js:避免在url动态段更新时重新输入(并重新呈现)当前路由,ember.js,Ember.js,是否可以在不重新创建路由视图的情况下更新当前路由的URL中的动态参数 具体来说,假设我有一个处理post/:post\u id的路由。此路线的视图显示具有给定id的帖子,但是(以无限滚动方式)也允许用户平滑地向下滚动到后续帖子。我想更新url以反映他们当前查看的帖子。如果我调用reaplceWith('post',newlyFocusedPost)renderTemplatehook,我的原始视图将被破坏,新视图将被渲染,平滑度将丢失 我喜欢与Backbone.js相当的功能: router.n

是否可以在不重新创建路由视图的情况下更新当前路由的URL中的动态参数

具体来说,假设我有一个处理
post/:post\u id
的路由。此路线的视图显示具有给定
id
的帖子,但是(以无限滚动方式)也允许用户平滑地向下滚动到后续帖子。我想更新url以反映他们当前查看的帖子。如果我调用
reaplceWith('post',newlyFocusedPost)
renderTemplatehook,我的原始视图将被破坏,新视图将被渲染,平滑度将丢失

我喜欢与Backbone.js相当的功能:

router.navigate('posts/123', {navigate:false, replace:true});
另一种解决方案是,如果将同一模板呈现到同一个出口中,则重用现有视图并仅更新其绑定


(我目前的解决方案是使用一个子例程,
postAtId
,该子例程处理动态id,不带任何视图,并调用
controllerFor('post')。set('content',newPost)

当只有上下文发生更改时重新呈现可能是一个错误。有一种方法可以解决这个问题

但是,也可以通过覆盖
renderTemplate
在您自己的路由中解决此行为,以便它仅在第一次进入路由后立即渲染。例如:

App.MyRoute = Ember.Route.extend({
  activate: function() {
    this.needsToRender = true;
  },
  renderTemplate: function() {
    if (this.needsToRender){
      this.needsToRender = false;
      render();
    }
  }
});