代码之家  ›  专栏  ›  技术社区  ›  JPS

如何从Ember中的控制器重新加载路由模型?

  •  0
  • JPS  · 技术社区  · 6 年前

    我目前正在努力完成一项任务,我希望这项任务非常简单或常见:我想在控制器中重新加载路由模型。据我所知,做这件事不容易吗? 是的,我可以访问 RouteInfo 对象由控制器的目标属性决定,但从那里我看不到刷新模型的方法。

    关于我试图解决的任务的一些背景: 我有一个路由模型,它提供了一个集合中最后一个未设置特定标志的对象(例如,路由/索引对象中的“未索引”)。现在,用户在这个对象上工作,并在控制器中触发一个操作,该操作将这个标志设置为“已索引”。因此,如果我通过来回导航重新加载路线,将显示下一个对象。但是我想在操作中直接触发这个重载(当然,不需要重新加载整个页面)。

    我的问题是:这是可能的,还是有其他/正确的方法来实现我试图实现的目标?

    1 回复  |  直到 6 年前
        1
  •  2
  •   jrjohnson    6 年前

    import Route from '@ember/routing/route';
    
    export default Route.extend({
      model() {
        return someFunctionThatFetchesYourData();
      }
    });
    

    import Controller from '@ember/controller';
    import { computed } from '@ember/object';
    
    export default Controller.extend({
      firstObjectWithProperty: computed('model.@each.notIndexed', function(){
        return this.model.find(obj => obj.notIndexed);
      }),
    });
    

    {{firstObjectWithProperty}} notIndexed