В Ember, как отложить готовность и поместить результат AJAX в контроллер?

Я понимаю, что Ember.Application теперь имеет deferReadiness, что позволяет мне ждать возврат вызова AJAX перед инициализацией приложения. Однако в примере в документах API они помещают значение в глобальную переменную в приложении:

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

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

Вместо того, чтобы вводить глобальную переменную для токена, я хочу поместить возвращаемое значение в свой ApplicationController. Однако я не могу найти, как получить дескриптор контроллера в этот момент, то есть в обратном вызове jQuery.


person Kevin Pauli    schedule 25.04.2013    source источник


Ответы (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();
});

(см. скрипку)

person MilkyWayJoe    schedule 27.04.2013
comment
Я просто знал, что будет способ! - person Kevin Pauli; 29.04.2013