ember.js Ember Octane Route类是否支持使用mixin?

nkkqxpd9  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(199)

我正在升级到Ember Octane,我知道mixin已经被弃用。我将继续使用它们,直到我找到替换它们的方法。同时,我希望将路由切换到使用新的类语法,而不是Route.extend。新的路由类语法是否支持路由mixin?如果支持,如何操作?
这与Ember Octane Upgrade How to pass values from component to controller有关

燃烧前辛烷值:

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

export default Route.extend(AbcAuthenticatedRouteMixin, {

    model() {

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

ember辛烷值:

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
cidc1ykv

cidc1ykv1#

原生类语法没有直接对应于Ember混合系统的语法。如果您想在转换为Octane时继续使用混合系统,可以将经典类扩展语法与原生类语法混合使用:
尝试

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 mixin。未来,mixin将从框架中移除,并且不会被直接替换。对于使用mixin的应用,建议的路径是将mixin重构为其他模式,包括:
纯原生类,通过类继承共享功能。实用程序函数,可以导入并在多个类中使用。服务,可以注入到多个类中,在它们之间共享功能和状态。

相关问题