通过应用程序配置 AngularJS 的动态提供程序选项

Dan*_*nze 5 javascript angularjs

我有接受如下配置的提供者模块:

angular.module('app', ['search']).
  config(['$searchProvider', function($searchProvider) {
    $searchProvider.options({
      resultLimit:50,
      defaultSort:'highToLow'
    });
  }]);
Run Code Online (Sandbox Code Playgroud)

每个客户端都会有一个新的应用程序实例化 --- 所以我正在考虑使用客户端自助服务门户来配置meta对象。

这意味着提供者模块现在需要在回调方法中等待,meta然后才能设置各自的配置。

但让我们都记住:配置块- 在提供者注册和配置阶段执行。只有提供者和常量可以注入配置块。这是为了防止服务在完全配置之前意外实例化......

...所以文档说您可以在配置块中使用 provider,但我不确定您是否可以使用它们进行服务调用。因为我不知道如何以正确的方式处理这个问题,所以我将向您展示我的“高级”想法:

使用另一个提供程序回调包装依赖提供程序:

angular.module('app', ['search','meta']).
  config(['$searchProvider','$metaProvider', function($searchProvider, $metaProvider) {
    $metaProvider.get(function(meta){
      $searchProvider.options(meta);
    });
  }]);
Run Code Online (Sandbox Code Playgroud)

处理这个问题的最佳方法是什么?

bre*_*ick 3

我最近也遇到了同样的问题。我找不到在框架范围内工作的解决方案,因此在加载所有客户端配置信息后,我通过手动引导 Angular 来解决该问题。http://docs.angularjs.org/api/angular.bootstrap

$.get('/api/context', function () {
    // ...
    angular.bootstrap($('#container'), ['app']);
});
Run Code Online (Sandbox Code Playgroud)