lemo-crm/web/app/routes/base-list-select.js
2022-06-24 21:56:55 +08:00

62 lines
1.9 KiB
JavaScript

import { set } from '@ember/object';
import BaseListRoute from './base-list';
export default BaseListRoute.extend({
queryParams: {
search: {
refreshModel: true
},
selectedId: {
refreshModel: false
},
idField: {
refreshModel: false
},
nameField: {
refreshModel: false
}
},
setupController(controller) {
controller.set('selectedModel', null);
this._super(...arguments);
},
actions: {
select(it, selected) {
let me = this;
console.info('select: ', it, selected);
if (selected) {
me.set('controller.selectedId', it.id);
me.set('controller.selectedModel', it);
}
else {
me.set('controller.selectedId', '');
me.set('controller.selectedModel', null);
}
},
submit() {
let me = this;
let parentRouteName = me.getParentRouteName();
const parentModel = me.modelFor(parentRouteName);
let itId = me.get('controller.selectedId');
if (itId) {
let it = me.get('controller.selectedModel');
if (it) {
console.info('select: ', it);
set(parentModel, me.get('controller.idField'), itId);
set(parentModel, me.get('controller.nameField'), it.name);
}
}
// not select
else {
set(parentModel, me.get('controller.idField'), '');
set(parentModel, me.get('controller.nameField'), '');
}
me.router.transitionTo(parentRouteName);
}
},
getParentRouteName() {
return this.get('parentRouteName') ||
this.get('routeName').replace(/\.[^.]+$/, '');
}
});