Поддерживает ли класс Ember Octane Route использование миксинов? - PullRequest
0 голосов
/ 25 марта 2020

Я обновляюсь до Ember Octane и понимаю, что миксины устарели. Я буду продолжать использовать их, пока не пойму, как их заменить. А пока я хотел бы переключить свой маршрут на использование нового синтаксиса класса, а не Route.extend. Поддерживает ли новый синтаксис класса маршрутов миксины маршрутов? Если да, то как?

Это связано с Обновлением Ember Octane Как передать значения из компонента в контроллер

Pre-ember Octane:

import Route from '@ember/routing/route';
import AbcAuthenticatedRouteMixin from '../../mixins/abc-authenticated-route-mixin';

export default Route.extend(AbcAuthenticatedRouteMixin, {

    model() {

        return {
            oldPassword: '',
            newPassword: '',
            confirmPassword: ''
        };
    },
})

Октябрь после января:

import Route from '@ember/routing/route';
import AbcAuthenticatedRouteMixin from '../../mixins/abc-authenticated-route-mixin';

export default class ChangePasswordRoute extends Route(AbcAuthenticatedRouteMixin, {

    model() {

        return {
            oldPassword: '',
            newPassword: '',
            confirmPassword: ''
        };
    },
}) // I get an error here that says: '{' expected

1 Ответ

1 голос
/ 25 марта 2020

Синтаксис собственного класса не имеет прямого эквивалента для системы Ember mixin. Если вы хотите продолжать использовать миксины при конвертации в Octane, вы можете сделать это, смешивая синтаксис расширения класса classi c с собственным синтаксисом класса:

Попробуйте

import Route from '@ember/routing/route';
import AbcAuthenticatedRouteMixin from '../../mixins/abc-authenticated-route-mixin';

export default class ChangePasswordRoute extends Route.extend(AbcAuthenticatedRouteMixin) {

    model() {

        return {
            oldPassword: '',
            newPassword: '',
            confirmPassword: ''
        };
    }
}

Кроме того, некоторые новые каркасные классы, такие как компоненты Glimmer, вообще не поддерживают микшеры Ember. В будущем миксины будут удалены из каркаса и не будут заменены напрямую. Для приложений, использующих миксины, рекомендуемый путь - это реорганизовать миксины в другие шаблоны, включая:

Чистые собственные классы, разделяющие функциональность посредством наследования классов. Служебные функции, которые можно импортировать и использовать в нескольких классах. Сервисы, которые могут быть внедрены в несколько классов, разделяя функциональность и состояние между ними.

...