Emberjs 动态从 mixin 注入
Emberjs dynamic inject from mixin
我有很多使用不同服务的控制器,我应该在其中扩展一个 mixin。在 mixin 中,基于控制器的调用,我应该注入差异服务。是真的吗?如果是,我愿意接受任何建议。
我的控制器是这样的:
import FilterController from 'core/addon/filter/filter-controller';
import defaultMixin from 'default-mixin';
export default FilterController.extend(defaultMixin,{
filter: Ember.inject.service(Pathes.inject.service.leaseFilter),
})
混合:
import Ember from 'ember';
import Views from '../const/views';
import ViewsService from '../static-services/views';
const {
computed,
} = Ember;
export default Ember.Mixin.create({
//THIS VIEW SERVICE I SHOULD INJECT BASED ON CONTROLLER
//VIEW.INJECT.SERVICE.[LEASE,LEASE1,LEASE2,LEASE3]
viewService: Ember.inject.service(Views.inject.service.Lease),
defaultViewType: computed(
'viewService.filteredViewsList',
function () {
const viewList = this.get('viewService.filteredViewsList');
return ViewsService.getDefaultViewFromList(viewList);
}
),
});
最直接的选择是覆盖控制器 extend
中的 viewService
。
export default FilterController.extend(defaultMixin,{
viewService: Ember.inject.service('someViewService'),
filter: Ember.inject.service(Pathes.inject.service.leaseFilter),
})
这样,当您在混合代码中使用它时,对 this.get('viewService')
的任何调用都将解析为您在 ctrl
.
中覆盖的任何内容
我有很多使用不同服务的控制器,我应该在其中扩展一个 mixin。在 mixin 中,基于控制器的调用,我应该注入差异服务。是真的吗?如果是,我愿意接受任何建议。 我的控制器是这样的:
import FilterController from 'core/addon/filter/filter-controller';
import defaultMixin from 'default-mixin';
export default FilterController.extend(defaultMixin,{
filter: Ember.inject.service(Pathes.inject.service.leaseFilter),
})
混合:
import Ember from 'ember';
import Views from '../const/views';
import ViewsService from '../static-services/views';
const {
computed,
} = Ember;
export default Ember.Mixin.create({
//THIS VIEW SERVICE I SHOULD INJECT BASED ON CONTROLLER
//VIEW.INJECT.SERVICE.[LEASE,LEASE1,LEASE2,LEASE3]
viewService: Ember.inject.service(Views.inject.service.Lease),
defaultViewType: computed(
'viewService.filteredViewsList',
function () {
const viewList = this.get('viewService.filteredViewsList');
return ViewsService.getDefaultViewFromList(viewList);
}
),
});
最直接的选择是覆盖控制器 extend
中的 viewService
。
export default FilterController.extend(defaultMixin,{
viewService: Ember.inject.service('someViewService'),
filter: Ember.inject.service(Pathes.inject.service.leaseFilter),
})
这样,当您在混合代码中使用它时,对 this.get('viewService')
的任何调用都将解析为您在 ctrl
.