1

在设置应用程序路由器时,我正在向后端请求一些数据:

App.Node = DS.Model.extend({
    ...
});

App.ApplicationRoute = Ember.Route.extend({
    processReply: function ( ) { do some processing here; },
    setupController: function (controller, model) {
        this.cache = App.Node.find();
    }
});

现在,当find从后端收到结果时,我想做一些数据处理,通过调用this.processReply()

如何收听find请求的完成情况?我已经尝试插入该.then方法(假设find返回一个承诺),但这阻止了我的应用程序。

    setupController: function (controller, model) {
        var _this = this;
        this.cache = App.Node.find().then(function(data) {
          _this.process();
        });
    }
4

1 回答 1

1

setupControllermodel与钩子不同的是同步的。您可以从承诺的 then 延迟设置控制器的内容。因此,控制器的绑定/计算属性会在数据加载后触发。

setupController: function(controller, model) {
  App.Node.find().then(function(data) {
    controller.set('content', data);
    // optionally
    // controller.process()
  });
}
于 2013-07-10T16:16:51.640 回答