это был мой первоначальный подход, но я получаю сообщение об ошибке код:Как правильно вводить свойство в контроллер
Ember.Application.initializer({
name: "currentUser",
initialize: function(container, application) {
var store = container.lookup('store:main'),
attributes = $("meta[name='current-user']").attr('content');
if(attributes){
var object = store.push(App.User, JSON.parse(attributes)),
user = App.User.find(object.id),
controller = container.lookup('controller:currentUser').set('content', user);
container.typeInjection('controller', 'currentUser', 'controller:currentUser');
}
}
});
Ошибка:
Error: Cannot inject a `controller:current-user` on other controller(s). Register the `controller:current-user` as a different type and perform the typeInjection.
Так что я попробовал несколько других подходов, так как
Ember.Application.initializer({
name: "currentUser",
after: "store",
initialize: function(container, application) {
var store, user, proxy;
var attributes = $("meta[name='current-user']").attr('content');
if (attributes) {
application.deferReadiness();
container.lookup('store:main').find('user', object.id).then(function(user) {
application.register('user:current', user, { instantiate: false, singleton: true });
application.inject('route', 'currentUser', 'user:current');
application.inject('controller', 'currentUser', 'user:current');
application.advanceReadiness();
}, function() {
application.advanceReadiness();
}
});
}
}
});
это не вызывает ошибок, но также не работает должным образом
другой подход, который я попытался было это
Ember.Application.initializer({
name: "currentUser",
after: "store",
initialize: function(container, application) {
var store, user, proxy;
var attributes = $("meta[name='current-user']").attr('content');
if(attributes) {
application.deferReadiness();
store = container.lookup('store:main');
proxy = App.CurrentUserObjectProxy.extend();
container.register('user:current', proxy, {singleton: true});
proxy = container.lookup('user:current');
var object = store.push(App.User, JSON.parse(attributes))
store.find('user', object.id).then(function (user) {
proxy.set('content', user);
application.inject('controller', 'currentUser', 'user:current');
application.advanceReadiness();
});
}
}
});
в другом файле
App.CurrentUserObjectProxy = Ember.ObjectProxy.extend({
content: null
});
То, что я пытаюсь сделать, чтобы отладить этот вопрос логарифмически имя CurrentUser на шаблоне приложения
{{log currentUser.firstName}}
Я могу видеть в моем инспекторе-инкубаторе, что данные для пользователя добавляются должным образом, это просто не правильно ли задает свойство currentUser на контроллере, какие-либо советы о том, что я должен делать по-другому?
спасибо за помощь – flylib
Любопытно, почему 'if (attributes)'? Должен ли программист быть обеспокоен тем, что время выполнения JavaScript не будет выполнять 'var attributes = {...};' правильно? – Sukima
Я скопировал и вставил вопрос, я думаю, что 'attributes' действительно является результатом другой функции, которая может возвращать' undefined'/'null'. – Kingpin2k