【问题标题】:Ember Component does not reload on route reload or transitionToEmber 组件不会在路由重新加载或 transitionTo 时重新加载
【发布时间】:2019-01-18 06:06:12
【问题描述】:

我有一个调用 ember 组件来显示所有数据的 ember 路由。

我遇到了路由键发生变化并使用route.transitionTo 重新加载的情况。数据加载正常。但问题是组件在 initdidInsertElement 方法中执行了操作,而 route.transitionTo 上的方法不会被触发。

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

我不能使用route.refresh,因为那不能做模型钩子。

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

【问题讨论】:

    标签: javascript ember.js ember-components


    【解决方案1】:

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

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

    例如: 路由器.hbs

    {{component-name parameter=parameter}}
    

    组件.js

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

    路由器.hbs

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

    路由器.js

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

    【讨论】:

    • 我已经选择了第一个选项,它有效。但是我必须为它设置一个听众感觉不对,希望有一个更清洁的选择。二是过分。但是感谢您抽出宝贵的时间!
    猜你喜欢
    • 2017-10-24
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    相关资源
    最近更新 更多