`loading`子句中的额外信息

时间:2015-05-30 19:20:15

标签: javascript ember.js

我有一个Ember应用程序。在给定的路线中,我有一个未立即加载的手工模型。因此,我将其作为承诺交付:

export default Ember.Route.extend({
  model() {
    return MyModel.create().promise();
  }
})

不要过分担心MyModel的工作原理。重要的是它返回RSVP承诺。

因此,Ember转换为loading路线。在那里,我有一个模板,可以正确显示一个微调器,一旦解析了promise,就转换到正确的路径。

我的问题是:如何展示真正的进展? MyModel做了一些相对复杂的事情,有几个步骤,我想展示这些步骤的实际进展。我希望展示有状态的进展,而不是无国籍的旋转器。 MyModel(或者更确切地说,它的承诺)知道它的进展,但我不知道如何将它传达给模板。

我为这个加载状态实现了一个路由和一个控制器。两者都正确加载,但似乎都没有访问任何可能有用的东西。事实上,我不能看到RSVP承诺甚至有一个进度处理程序,就像其他库一样。我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

您可以使用Route的{​​{1}}功能访问其他控制器。

因此,在您的主要路线中,您可以使用controllerFor获取this.controllerFor('loading')并在其中设置属性。

你的LoadingController钩子看起来像这样:

model

我创建了一个JSBin,举例说明了这一点。