如何强制Ember.Component重新渲染?

时间:2017-06-12 12:19:12

标签: ember.js components htmlbars

有没有办法让Ember.Component强制重新渲染?

.rerender()方法,但它没有帮助。 我还尝试使用.notifyPropertyChange作为模板,layoute - 相同的

现在对于这种情况我需要将一块模板包装到if包装器中并切换标志的值。但方式是丑陋和无聊。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

查看Ember Run Loop

要覆盖此背景'过程你可以使用这样的东西:

showElement: false,

actions: {
  buttonClick() {
    Ember.run(()=> {
      this.toggleProperty('showElement');
    })
  }
}

这将强制运行循环重新启动,而不是Ember处理任何属性更改并决定代码应该如何执行,就像JavaScript事件循环一样。

可以找到here

的一个很好的解释

答案 1 :(得分:0)

我的一个组件遇到了同样的问题。正如社区所说,如果使用正确的ember模式,则不必执行此操作。

然而,正如在特定情况下,我找到了解决办法。

您必须在routes/somefile.js中创建一个动作以进行刷新,如下所示:

actions: {
  refresh() {
    this.refresh();
  }
}

并在组件视图中添加一个隐藏按钮,点击路由器的操作,如此

<button id="refresh_invoice" class="hidden" {{action 'refresh'}}></button>

使用Jquery在组件中,您可以单击隐藏按钮,这将刷新组件。

这不是一个很好的修复,但它的工作。 跳它会有所帮助。