Ember.js 如何根据设备类型有条件地混合mixin

Ember.js 如何根据设备类型有条件地混合mixin,ember.js,Ember.js,我有一个应用程序需要处理移动设备上的手势,如滑动和轻触。我正在使用余烬手势插件来实现这一点 在组件中混合这些附加代码并添加事件处理程序在移动设备上很重要,但在桌面设备上完全没有用 如何有条件地混合混音?如果代码在移动设备上运行,我想检测设备并有条件地混合mixin 示例代码: import Ember from 'ember'; import RecognizerMixin from 'ember-gestures/mixins/recognizers'; export default Emb

我有一个应用程序需要处理移动设备上的手势,如滑动和轻触。我正在使用
余烬手势
插件来实现这一点

在组件中混合这些附加代码并添加事件处理程序在移动设备上很重要,但在桌面设备上完全没有用

如何有条件地混合混音?如果代码在移动设备上运行,我想检测设备并有条件地混合mixin

示例代码:

import Ember from 'ember';
import RecognizerMixin from 'ember-gestures/mixins/recognizers';

export default Ember.Component.extend(RecognizerMixin, {
  recognizers: 'swipe',

  swipe(e) {
    //mobile swipe event
  }
});

一种快速的方法是:

import Ember from 'ember';
import mixin from '../mixins/my-mixin';

let component = Ember.Component.extend({
});

if( /*your device control logic would be here.*/ ){
  component.reopen(mixin);

  component.reopen({
    recognizers: 'swipe',
    swipe(e) {
      //mobile swipe event
    }

  });
}

export default component;
更好的建议是:在初始值设定项或实例初始值设定项中执行上述逻辑。因为这与组件逻辑无关,所以这是一个交叉关注点,应该与组件分离