Возникла проблема с ember (v.3.x) и не могла понять, почему. Я не нашел ничего (что работало в моем случае) ни в документации, ни здесь.
Итак, вот проблема: это возвращает undefined в моем контроллере внутри вычисляемого свойства (undefined.get ('filter')). Остальная часть моей функции работает, поэтому я не вставлял ее сюда.
// in dic.js (controller):
export default Controller.extend({
filter: '',
filteredTerms: computed('filter', () => {
const x = this.get('filter');
// ...
}),
Соответствующее поле ввода:
// in dic.hbs
{{input value=filter}}
В своем маршруте я просто возвращаю модель, которая должна быть отфильтрована этой функцией.
model.filter не работает. значение фильтра поступает из поля ввода, которое не имеет ничего общего с моделью ...





Ответ прост: не используйте стрелочную функцию для вычислений. Это должно работать:
filteredTerms: computed('filter', function () {
const x = this.get('filter');
// ...
В этом принципиальное отличие обычных функций от стрелочных. Стрелочные функции не имеют собственного this-контекста. this внутри стрелки функция всегда такая же, как и снаружи. И что ж, снаружи в данном случае это буквально вне объекта, поэтому глобальный контекст. Таким образом, вы получаете window / undefined в зависимости от того, находитесь вы в строгом режиме или нет.
Итак, общее правило:
this или вообще не используйте thisthis-контекстСпасибо за ваше объяснение! сработало :) похоже, я был слеп к очевидному.
попробуйте model.filter