0
我在我的Firebase服務器中提供了一些爲客戶端應用程序提供設置的數據。 我已經實現了一個從服務器獲取這些數據的工廠。
我的問題是關於設計 - 我應該得到這個數據一次,應用程序啓動並附加到rootscope並將其傳遞給所有需要它的控制器,或者將我的工廠注入到使用配置數據的每個控制器中,並在工廠商店本地配置?
// this factory allows getting various global app settings and constants
.factory('ConfigFactory', ['$firebaseObject', 'FirebaseConfig',
function($firebaseObject, FirebaseConfig) {
'use strict';
var configs = new Firebase(FirebaseConfig.baseUrl + "/configs");
var _configs = [];
return {
getConfig: function(configName, user_id){
if(!_configs[configName]){
_configs[configName] = $firebaseObject(configs.child(configName));
}
return _configs[configName];
}
};
}
])
感謝您的信息。我對工廠和服務之間差異的理解充其量是模糊的。 – rex
那麼你的建議方法的工作原理是它將獲取一次數據並將其存儲在內部?我不想讓客戶端去服務器everyime,它想從不同的控制器獲取配置數據。 – rex
在Angular中沒有像工廠這樣的組件類型。有服務,就是這樣。但是服務可以用幾個「配方」來定義:service(),factory(),provider(),value(),constant()。 https://docs.angularjs.org/guide/providers。服務是一個單例,因此如果您將結果存儲在服務中並每次都返回,則使用該服務的所有控制器,過濾器等將使用同一個唯一服務實例,並獲得相同的緩存值。 –