据我所知,现在Ember.Application有deferReadiness ,让我等待一个AJAX调用的初始化程序之前返回。 然而,在API文档的例子,他们把值转换成应用程序的全局变量:
App = Ember.Application.create();
App.deferReadiness();
jQuery.getJSON("/auth-token", function(token) {
App.token = token;
App.advanceReadiness();
});
而不是引入一个全局变量的道理,我想返回值放入我的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();
});
(见小提琴 )