【问题标题】:Render immediately in Ember.js在 Ember.js 中立即渲染
【发布时间】:2024-04-12 07:35:01
【问题描述】:

我有一条路线,model 方法返回一个承诺。根据Ember.js spec,这会导致某些操作(渲染,setupController)被延迟,直到 promise 被解决。

这对我来说不好。我希望视图立即呈现。然后,一旦模型可用,我想在控制器上设置一个属性。这将导致视图的适当部分重新呈现。

这样做的正确方法是什么?特别是我不想在我的控制器内操作承诺。理想情况下,我会在路由内完成所有依赖项设置,就像现在一样。

【问题讨论】:

    标签: javascript ember.js routes promise ember-router


    【解决方案1】:

    使用LoadingRoute 解决了这个问题,示例如下:

    http://jsfiddle.net/u3w9Q/

    请注意,较新的版本(我认为 >= 1.3)也支持更复杂的场景。更多细节在这里:

    http://emberjs.com/guides/routing/loading-and-error-substates/

    【讨论】:

      【解决方案2】:

      有类似的问题。我通过等待didInsertElementView 上触发,然后使用this.get('controller').send('actionInsideControllerHere'); 在控制器上调用一个动作,从而解决了当前的渲染问题。该操作调用了我的一个模型(对象),并且还更改了控制器上的一个属性,以在等待数据的组件上显示“微调器”。可能有更好的方法来做到这一点,但这就是我现在想出的。让我知道这是否适合你。

      【讨论】: