У меня возникла проблема с преобразованием моего объекта модели в приложение Ember.
У меня есть маршрут calendar
, который определяет такую модель.
this.store.findAll('competency');
Я пытаюсь преобразовать данные, возвращаемые из этого, в метод контроллера calendarItems
, который определен как свойство.
Что я хотел бы сделать, так это взять мою модель и вызвать на ней функцию карты, преобразовать объект и вернуть его обратно в качестве свойства.
Я изменил контроллер на ArrayController, чтобы разрешить вызов методов Enumberable, но все равно не повезло. Функция присутствует, когда я могу this.get('model').map
Любые идеи, где я спотыкаюсь? Может быть, мой подход является выходом, но в основном я просто хочу преобразовать модель и представить эти данные в шаблоне.
Заранее спасибо! Райан
Изменить
Это моя логика преобразования, но массив, зарегистрированный в шаблоне, просто [].
export default Ember.Controller.extend({
calendarItems: Ember.computed('model', function () {
return this.get('model').map(function(competency) {
return 1;
}, this);
})
});
console.log(this.get('model').get('length'));
возвращает 0, что заставило меня предположить, что у меня нет элементов модели из хранилища, чтобы повторить один, который объяснил бы пустой массив. Однако, если я помещу {{#each}}
в шаблон для распечатки моделей, я получу 3 модели.
Изменить
Календарный маршрут
model:
return this.store.findAll('competency');
}
Контроллер календаря
calendarItems: Ember.computed('model', function () {
return this.get('model').map(function(competency) {
return 1;
}, this);
})
Шаблон календаря
{{log calendarItems}}
calendar
с помощьюreturn this.store.findAll('competency');
, но в контроллереcalendar
console.log(this.get('model').get('length'));
возвращает 0, когда есть три элемента 01.09.2015console.log('computing!'); console.log(this.get('model'), this.model);
в свое вычисляемое свойство и посмотрите вывод в консоли. 02.09.2015Class {store: Class, isLoaded: true, manager: Class, isUpdating: true, __ember1441141826237: null…} Class {store: Class, isLoaded: true, manager: Class, isUpdating: true, __ember1441141826237: null…}
Однако такое обновление кажется странным. 02.09.2015computing!
. 02.09.2015{{log calendarItems}}
в шаблон. Я только что попробовал аналогичный код (вычисленное свойство с использованием карты), и он отлично работает. 02.09.2015[]
независимо от карты, кажется, что this.model не заполнен элементами магазина. 02.09.2015model: return this.store.findAll('competency'); }
похоже на опечатку, должно бытьmodel: function () { return this.store.findAll('competency'); }
. Попробуйтеconsole.log(competency);
передreturn 1;
обратным вызовом внутри карты 02.09.2015Ember.Controller
илиEmber.ArrayController
? Должен быть первым 02.09.2015{{#each model as |item|}}{{log item}}{{/each}}
, вы увидите все 3 элемента в консоли? 02.09.2015Class {store: Class, container: Container, _internalModel: InternalModel, isError: false, error: null…}
02.09.2015