在灰烬,如何推迟的准备,并把AJAX结果到控制器?(In Ember, how to defer r

2019-09-01 02:50发布

据我所知,现在Ember.Application有deferReadiness ,让我等待一个AJAX调用的初始化程序之前返回。 然而,在API文档的例子,他们把值转换成应用程序的全局变量:

App = Ember.Application.create();
App.deferReadiness();

jQuery.getJSON("/auth-token", function(token) {
  App.token = token;
  App.advanceReadiness();
});

而不是引入一个全局变量的道理,我想返回值放入我的ApplicationController。 不过,我似乎无法找到如何得到一个处理在这一点上控制,即在jQuery的回调。

Answer 1:

您可以reopen控制器在$.getJSON回调中设置响应值token属性。 假设你有一个端点~/auth-token返回JSON有一个属性key ,你可以这样做:

window.App = Ember.Application.create();

App.ApplicationController = Em.Controller.extend({
    token: ''
});

App.deferReadiness();

$.getJSON("/auth-token", function(token) {
    console.log(token.key);
    App.ApplicationController.reopen({
        token: token.key
    });
    App.advanceReadiness();
});

(见小提琴 )



文章来源: In Ember, how to defer readiness, and put AJAX result into a Controller?