lemo-crm/web/app/mixins/components/base-component.js
2022-06-23 17:29:32 +08:00

43 lines
1.5 KiB
JavaScript

import Mixin from '@ember/object/mixin';
import { inject as service } from '@ember/service';
import { alias } from '@ember/object/computed';
import { computed } from '@ember/object';
import { getOwner } from '@ember/application';
export default Mixin.create({
toolService: service('tool-service'),
routeName: alias('router.currentRouteName'),
'trim-index': true,
route: computed('routeName', function() {
let me = this;
let routeName = me.get('routeName');
return me.getRoute(me.get('trim-index') ?
routeName.replace(/\.index$/, '') : routeName);
}),
service: computed('routeName', function() {
return this.getService();
}),
params: computed('router.location.lastSetURL', function() {
let me = this;
let routeName = me.get('routeName');
return me.getRouteParams(me.get('trim-index') ?
routeName.replace(/\.index$/, '') : routeName);
}),
getRouteParams(routeName) {
return this.get('route').paramsFor(routeName);
},
getRoute(routeName) {
return getOwner(this).lookup(
'route:' + (routeName || this.get('routeName')));
},
getParentRouteName(routeName) {
return routeName.replace(/\.[^\.]+$/, '');
},
getService(name) {
const me = this;
return name ? me.get('toolService').getServiceByRouteName(name) :
me.getRoute().get('service') ||
me.get('toolService').getServiceByRouteName(me.get('routeName'));
}
});