Ember组件不会在路线重新加载或transitionTo时重新加载

时间:2018-08-10 15:21:36

标签: javascript ember.js ember-components

我有一条余烬路线,该路线会调用余烬组件以显示所有数据。

在某些情况下,路由的密钥发生了更改,我使用route.transitionTo重新加载。数据加载正常。但是问题在于该组件确实在initdidInsertElement方法中填充了东西,而在route.transitionTo上却没有触发。

如何确保在transitionTo上再次调用该组件?

我不能使用route.refresh,因为那样做不会导致模型异常。

任何帮助将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:1)

嗯,有一种更困难,更好的方法,还有一种懒惰而又快速的方法:

  1. 更好的方法:我建议您在路由中创建一个属性,然后将此参数传递给组件,然后在组件中为该参数(发送的内容)创建一个计算属性,然后就可以在其中运行代码了您在“ init”和“ didInsertElement”函数中调用了。

例如: router.hbs

{{component-name parameter=parameter}}

Component.js

lineWidth: Ember.computed('parameter', function() {
    // I will run here if I get the parameter (and the parameter changed in route)
}),
  1. 不是最好的方法: 您可以像这样重新加载整个组件:

router.hbs

{{#if reload}}
    {{component-name}}
{{/if}}

router.js

this.set('reload', false);
Ember.run.next(() => {
    this.set('reload', true);
});