5

为了简短起见:

是否可以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({})});
  }
});

这可能吗?

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

4

1 回答 1

1

我不认为初始化器可以帮助您设置自定义解析器,根据源代码container设置比任何初始化器都早,解析器是容器的属性。

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

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

Ember.Application.create({...});
于 2014-08-06T13:06:54.380 回答