Ember App Kit:在Ember.Application.create()之外设置解析器

时间:2014-03-25 14:43:51

标签: ember.js ember-app-kit

保持简短:

是否可以在Resolver区块之外设置应用程序的Ember.Application.create()

理想情况下,我想在Resolver函数中设置Ember.Application.initializer#initialize()。类似的东西:

import CustomResolver from 'appkit/utils/resolver/custom';
import CustomAjax from 'appkit/utils/ajax/custom';

Ember.Application.initializer({
  name: 'resolver_setup',

  initialize: function (container, application) {
     // NOTE: For an unknown reason (unknown to me!) I can't import CustomAjax in CustomResolver...
     application.set('Resolver', CustomResolver.create({ajax: CustomAjax.create({})});
  }
});

这可能吗?

P.S。:我需要自定义解析器的原因是,我从服务器获取所有模板,而不是在应用程序启动时将它们提供给用户。因此,我正在扩展EAK中默认使用的ember-jj-abrams-resolver ...

1 个答案:

答案 0 :(得分:1)

我认为初始值设定项可以帮助您设置自定义解析器,according to the source codecontainer早于任何初始化程序设置,解析程序是属性容器。

您在初始化程序中设置Resolver属性,但设置容器的过程不会使用此属性。我认为正确的方法是重新打开Ember.Application并在创建Resolver之前设置Ember.Application

Ember.Application.reopenClass({
  Resolver: YOUR_CUSTOM_RESOLVER_NAME
});

Ember.Application.create({...});