Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 来自mixin的动态注入_Javascript_Ember.js_Ember Cli - Fatal编程技术网

Javascript 来自mixin的动态注入

Javascript 来自mixin的动态注入,javascript,ember.js,ember-cli,Javascript,Ember.js,Ember Cli,我有很多控制器使用不同的服务,在这里我应该扩展一个mixin。在mixin中,基于控制器的调用,我应该注入差异服务。是真的吗?如果是,我愿意接受任何建议。 我的控制器如下所示: 混合: 最直接的选项是覆盖控制器扩展中的viewService 这样,当您在mixin代码中使用它时,对this.get'viewService'的任何调用都将解析为您在ctrl中重写的内容 import FilterController from 'core/addon/filter/filter-controller

我有很多控制器使用不同的服务,在这里我应该扩展一个mixin。在mixin中,基于控制器的调用,我应该注入差异服务。是真的吗?如果是,我愿意接受任何建议。 我的控制器如下所示:

混合:


最直接的选项是覆盖控制器扩展中的viewService

这样,当您在mixin代码中使用它时,对this.get'viewService'的任何调用都将解析为您在ctrl中重写的内容

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);
    }
  ),
});
export default FilterController.extend(defaultMixin,{
  viewService: Ember.inject.service('someViewService'),
  filter: Ember.inject.service(Pathes.inject.service.leaseFilter),
})