Javascript 通过app config AngularJS动态提供程序选项

Javascript 通过app config AngularJS动态提供程序选项,javascript,angularjs,Javascript,Angularjs,我有接受以下配置的提供程序模块: angular.module('app', ['search']). config(['$searchProvider', function($searchProvider) { $searchProvider.options({ resultLimit:50, defaultSort:'highToLow' }); }]); 每个客户端都将有一个新的应用程序实例化——因此我正在考虑使用客户端自助门户来配置met

我有接受以下配置的提供程序模块:

angular.module('app', ['search']).
  config(['$searchProvider', function($searchProvider) {
    $searchProvider.options({
      resultLimit:50,
      defaultSort:'highToLow'
    });
  }]);
每个客户端都将有一个新的应用程序实例化——因此我正在考虑使用客户端自助门户来配置
meta
对象

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

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

…所以文档说您可以在配置块中使用提供者,但我不确定您是否可以使用它们进行服务调用。因为我不知道如何正确处理,我将向您展示我的“高级”理念:

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

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

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

我最近也遇到了同样的问题。我无法找到在框架范围内工作的解决方案,因此在加载所有客户端配置信息后,我通过手动引导angular解决了这个问题


你能不能在你选择的服务器端语言的页面加载上转储JSON格式的配置?@JaniHartikainen Single page App。没有一个。如果你的提供者正在等待像JaniHartikainen指出的异步数据,那么你就应该考虑将数据引导到HTML中。另一方面,如果用户可以等待应用程序完全配置,则可以手动引导。应用程序启动后,无法重新配置提供程序。我只是好奇-为什么不使用普通服务而不是提供程序?@g00fy提供程序是包含多个方法的模块。有几种自定义配置。此时,我正在考虑将它们包装在我的应用程序级控制器内的回调函数中。实例化它们的成本/开销很小,以后可以根据需要在子控制器级别进行API调用。@DanKanze是否希望提供程序是异步的?我猜,如果您使用回调,那么是的。这里唯一的问题是,提供商应该是同步的,因为在实际运行应用程序之前,您需要配置应用程序。这样做很有意义。
$.get
不可用,但angular的全局API是吗?我必须包含jquery或滚动我自己的xhr才能发出GET请求,对吗?
$.get('/api/context', function () {
    // ...
    angular.bootstrap($('#container'), ['app']);
});