Emberjs - 知道何时在模板上呈现模型

时间:2014-05-23 13:37:23

标签: ember.js

当模型中的数据在模板上呈现时,是否有可能知道(使用最佳的事件处理程序),还有更新后的内容?

我将以此为例:

App.ApplicationRoute = Ember.Route.extend({
    setupController: function(controller, model) {
        var promise = myNewModel();
        this._super(controller, promise);
    }
})

我正在更新setupController中的模式,因为我不希望用户被卡在空白页面上。

当我在模板上完成所有数据渲染时,是否有办法获取该事件,在我更新模型的情况下?

2 个答案:

答案 0 :(得分:1)

当你达到setupController时,模型需要是真实的,而不是承诺。在这里设置模型是一个承诺根本不起作用。你可以尝试这样的事情:

setupController: function(controller, model) {
    myNewModel().then(function(model) {
        controller.set('model', model);
    });
}

换句话说,它不是您正在寻找的事件,而是您newModel来电的履行。

答案 1 :(得分:0)

您应该使用Loading Substates。 Refer docs here

您需要从route#model挂钩获取模型并返回一个promise。加载状态将被触发,直到promise结算。您可以显示加载模板,直到承诺解决。

App.ApplicationRoute = Ember.Route.extend({
 model: function() {
  var promise = myNewModel();
  return promise; 
 }
});

Refer @machty's jsbin以及相关的PR