Emberjs динамический впрыск из mixin - PullRequest
0 голосов
/ 27 ноября 2018

У меня много контроллеров, использующих разные сервисы, где я должен расширить один миксин.В 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),
})

Mixin:

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);
    }
  ),
});

1 Ответ

0 голосов
/ 27 ноября 2018

Самый простой вариант - переопределить viewService в extend.

export default FilterController.extend(defaultMixin,{
  viewService: Ember.inject.service('someViewService'),
  filter: Ember.inject.service(Pathes.inject.service.leaseFilter),
})

контроллера. Таким образом, когда вы используете его в смешанном коде, любой вызов this.get('viewService') разрешитсяк тому, что вы переопределили в ctrl.

...