Ember.js路由:如何在从子setupController刷新父路由时避免无限循环



我有两个嵌套路由,projectsprojects/project。每当我打开project时,我都希望刷新projects路由。

我所知道的是在setupController挂接期间调用一个控制器函数(最终将在projects路由中调用refresh)。类似这样的东西:

  // project route
  setupController: function(controller, model) {
    this.controllerFor('projects').send('search');
    controller.set('model', model)
  }
  // projects controller
  actions: {
    search: function() {
      // do other things
      this.send('refreshModel');
    }
  }
  // projects route
  actions: {
    refreshModel: function() {
      this.refresh();
    }
  }

问题是,当调用refresh函数时,它不仅刷新当前路由,还刷新所有子路由,这意味着这个setupController钩子将再次执行,从而创建这个无限循环。

有没有办法让Ember只刷新当前的路线,而忽略它的孩子?

谢谢。

要直接回答,没有办法只刷新父路由。然而,您可能只需要重新加载模型,就可以获得所需的行为。

关于DS.Model#reload,请参见相关API文档。

最新更新