使用 Ember-CLI 命名混合

Naming Mixins with Ember-CLI

我有一个 ember 插件,它使用多个 Mixin 来提供其功能。不幸的是,当我在 Ember Inspector 中查看这个对象时,我得到了 "unknown mixin" 个桶,我的状态分散在这些桶中:

我同意有很多 "buckets" 但我真的很想给它们命名。在 Ember-CLI context/environment.

中工作时如何做到这一点

p.s。我在 Ember-CLI 0.2.3 上使用 Ember 1.11.1 和 Ember Inspector 的最新版本(截至 2015 年 4 月 11 日)。


有人建议 toString() 函数可能会解决这个问题,但它似乎对我没有效果:

您在上图中看到的是应用下面建议的更改后出现在检查器中的内容:

// addon/mixins/ui-shared-animation.js

import Ember from 'ember';

var AnimationSupport = Ember.Mixin.create({
  classNameBindings: ['_animateClass'],

  animate: null,
  _animator: Ember.observer( ... ),
  animateEnabled: null,
  animateDisabled: null,
  _disabledObserver: Ember.observer( ... ),
  animateEnter: null,
  _enterAnimationObserver: Ember.observer( ... ),
  _processAnimation: function(animate) { ... }
  }
});

AnimationSupport.toString = function() { return 'ui-shared-animation'; };
export default AnimationSupport; 

我遇到了同样的问题,并在 class 上使用 toString 方法解决了它。例如:

var Person = Ember.Object.extend({
  name: null
});

Person.toString = function() { return 'Person'; };

export default Person;

好的,我已经通过查看 Ember Inspector 的已关闭问题并提出这个 gem:

来回答我的问题

https://github.com/emberjs/ember-inspector/issues/284

在 Ember-CLI 中,您需要为 mixin 执行以下操作:

// addon/mixins/ui-shared-animation.js

import Ember from 'ember';

var AnimationSupport = Ember.Mixin.create({
  classNameBindings: ['_animateClass'],

  animate: null,
  _animator: Ember.observer( ... ),
  animateEnabled: null,
  animateDisabled: null,
  _disabledObserver: Ember.observer( ... ),
  animateEnter: null,
  _enterAnimationObserver: Ember.observer( ... ),
  _processAnimation: function(animate) { ... }
  }
});

AnimationSupport[Ember.NAME_KEY] = 'animation-support';
export default AnimationSupport; 

耶!我的 6 mixin 插件方法变得更加合理。 :)