据我所知,Ember.Application现在有deferReadiness让我等到初始化应用程序之前返回AJAX调用。但是,在api docs的示例中,他们将值放入App中的全局变量:
App = Ember.Application.create();
App.deferReadiness();
jQuery.getJSON("/auth-token", function(token) {
App.token = token;
App.advanceReadiness();
});
我不想为令牌引入全局变量,而是将返回的值放入我的ApplicationController中。但是,我现在似乎无法找到如何获取控制器的句柄,即在jQuery回调中。
答案 0 :(得分:9)
您可以在$.getJSON
回调中reopen
控制器在token
属性中设置响应值。假设您有一个端点~/auth-token
返回一个带有单个属性key
的JSON,您可以执行以下操作:
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();
});
(见fiddle)