Я пытаюсь создать User.current()
в своем приложении, которое извлекает данные с моего сервера с помощью $.getJSON('/users/current', function(data) { ... });
. Я использую метод Singleton, который использует Дискурс, который делает следующее:Как вернуть отложенное обещание и создать модель с Ember.Deferred?
Dashboard.Singleton = Ember.Mixin.create({
// See https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/mixins/singleton.js
current: function() {
if (!this._current) {
this._current = this.createCurrent();
}
return this._current;
},
createCurrent: function() {
return this.create({});
}
});
И в моей User
модели одиночки, я переписан createCurrent
следующим образом:
Dashboard.User.reopenClass(Dashboard.Singleton, {
createCurrent: function() {
return Ember.Deferred.promise(function(p) {
return p.resolve($.getJSON('/users/current').then(function(data) {
return Dashboard.User.create(data);
}));
});
}
});
Пользователь нормальный объект Ember модель:
Dashboard.User = Ember.Object.extend({
});
Это делает запросить данные с сервера, но функция не устанавливает User.current()
правильно - когда я его проверяю, User.current()
не имеет никаких свойств, которые должны быть установлены, например name
.
Как я могу вернуться и установить текущего пользователя с помощью отсрочки и обещаний Эмбера?
Что такое пользовательская модель? Простой объект Ember? – Kingpin2k
Да. Я обновлю вопрос, что такое «Пользователь». – josh