#ember.js #dependency-injection #callback #ember-data #promise
#ember.js #внедрение зависимостей #обратный вызов #ember-данные #обещание
Вопрос:
Я пытаюсь получить зарегистрированного пользователя (от /users?current=1
которого работает) и сделать этого пользователя доступным как свойство во всем моем приложении, но вместо того, чтобы вводить моего пользователя, я вводю это:
Object { type: makeCtor/Class(), query: Object, content: Getter, store: Object, manager: Object, isLoaded: true, meta: Object, 3 more… }
Это, как и полностью, не похоже на то, что я хочу. Запись отображается в хранилище просто отлично. Вот соответствующий код. Спасибо, что посмотрели.
App.initializer({
name: "appUser",
after:['ember-data'],
initialize: function (container, application) {
var store = container.lookup('store:main');
store.find('user',{current: "1"}).then(function(data){
var user = data; //data.get('content')[0] (?) (Something else?)
application.register("my:user", user, {instantiate:false});
application.inject("controller", "user", "my:user");
application.inject("route", "user", "my:user");
});
}
});
Ответ №1:
Коллекции имеют свойство ( firstObject
), которое возвращает первый элемент в коллекции или undefined .
Вы должны быть осторожны в своих размышлениях о том, как должна выглядеть модель, когда вы смотрите на нее в консоли. Он скрывает свойства во вложенных свойствах и возвращает их при использовании методов получения и устанавливает их при использовании установщиков. Это все для возможности отката.
App.initializer({
name: "appUser",
after:['ember-data'],
initialize: function (container, application) {
var store = container.lookup('store:main');
store.find('user',{current: "1"}).then(function(data){
var user = data.get('firstObject');
console.log(user.get('first_name')); // use getters to view the properties
application.register("my:user", user, {instantiate:false});
application.inject("controller", "user", "my:user");
application.inject("route", "user", "my:user");
});
}
});
Комментарии:
1. Спасибо kingpin, ты действительно помог мне разобраться с Ember. Ваше решение работает.
2. Рад слышать, кривая обучения немного чудовищна, но как только вы освоите некоторые основы, это станет супер круто. Удачи!