Вы хотите предварительно загрузить данные/модели для инициализации приложения и почувствовать beforeModel неверно?
Похоже, вам нужен инициализатор приложения!
Ваш друг в этом случае:
App.deferReadiness(); // останавливать выполнение приложения до тех пор, пока все экземпляры этого вызова (то есть: несколько инициализаторов) не будут совпадать с экземпляром:
App.advanceReadiness(); // считаем, что это эквивалентно вызову разрешения обещания.
1) От вас смотрит пользователь непосредственно, изменение которых упоминается в соответствии с вашей установки приложения:
Ember.Application.initializer({
name: 'loadUser',
after: 'store',
initialize: function(container, app) {
// modify this following to suit how you're determining the account
var url = 'user/' + currentAccount;
// tell the app to pause loading until advanceReadiness is declared
app.deferReadiness();
// load from JSON
Ember.$.getJSON('url').then(function(json) {
var store = container.lookup('store:main');
store.load(app.User, json);
// tell app to start progressing again
app.advanceReadiness();
});
}
});
2) С помощью мета-тег:
Ember.Application.initializer({
name: 'currentUser'
after: 'store',
initialize: function(container, app) {
app.deferReadiness();
$(function() {
// Look up an attribute in a meta tag
var store = container.lookup('store:main'),
attributes = $('meta[name="current-user"]').attr('content');
if (attributes) {
var obj = store.load(app.User, JSON.parse(attributes)),
user = App.User.find(obj.id),
controller = container.lookup('controller:currentUser').set('content', user);
container.typeInjection('controller', 'currentUser', 'controller:currentUser');
}
app.advanceReadiness();
});
}
});
3) Через данные сеанса:
Ember.Application.initializer({
name : 'currentUser',
after : 'session',
initialize: function(container, app) {
var controller = container.lookup('controller:currentUser');
container.typeInjection('controller', 'currentUser', 'controller:currentUser');
}
});
Спасибо, но вы действительно не отвечаете, где я должен загружать модели уровня приложения, которые мне нужны во всем мире. Другими словами, модели, которые не зависят от URL. –
, если они вам нужны, вы можете использовать метод init Ember.Application. –
Я не могу найти никаких признаков того, что он ждет обещания разрешить. Можете ли вы объяснить более подробно? Благодарю. –