我知道Ember.Application现在有deferReadiness,它允许我在初始化应用程序之前等待AJAX调用的返回.但是,在api文档的示例中,他们将值放入App中的全局变量:
App = Ember.Application.create();
App.deferReadiness();
jQuery.getJSON("/auth-token", function(token) {
App.token = token;
App.advanceReadiness();
});
Run Code Online (Sandbox Code Playgroud)
我没有为令牌引入全局变量,而是将返回的值放入我的ApplicationController中.但是,我现在似乎无法找到如何获得控制器的句柄,即在jQuery回调中.
您可以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();
});
Run Code Online (Sandbox Code Playgroud)
(见小提琴)