2013-07-09 76 views
4

我有接受類似配置的支持模塊:動態提供的選項

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); 
    }); 
    }]); 

什麼是最好的方式處理這個(事情?

+0

你就不能從您所選擇的服務器端語言傾倒在頁面加載在JSON的配置? –

+0

@JaniHartikainen單頁應用程序。空無一人。 –

+0

如果您的提供商正在等待異步數據,如@JaniHartikainen指出,比你真的應該考慮的是數據自舉到HTML。另一方面,如果您的用戶可以等待您的應用程序完全配置,則您可以手動引導角度。應用程序啓動後無法重新配置提供程序。我只是好奇 - 爲什麼不使用普通服務而不是提供者? – g00fy

回答

3

最近我有同樣的問題。我無法找到一個解決辦法,所以我工作圍繞這個問題由我已經加載的所有的客戶端配置信息後,手動自舉角的框架範圍內工作。 http://docs.angularjs.org/api/angular.bootstrap

$.get('/api/context', function() { 
    // ... 
    angular.bootstrap($('#container'), ['app']); 
}); 
+0

儘管使用了角度的全局API,但是$ .get'不是可用的嗎?我將不得不包括jquery或滾動我自己的xhr來發出GET請求嗎? –

+0

是的,這是正確的。 – brentmckendrick