5

我知道 Ember.Application 现在有deferReadiness让我在初始化应用程序之前等待 AJAX 调用的返回。但是,在 api 文档的示例中,他们将值放入 App 中的全局变量中:

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

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

我不想为令牌引入全局变量,而是想将返回的值放入我的 ApplicationController。但是,此时我似乎无法找到如何获取控制器的句柄,即在 jQuery 回调中。

4

1 回答 1

9

您可以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();
});

(见小提琴

于 2013-04-27T17:02:15.370 回答