我应该将配置附加到 $rootScope 还是重复调用注入工厂?
Should I attach a config to $rootScope or repeatedly call injected factory?
我的 firebase 服务器中有一些数据可以为客户端应用程序提供设置。
我已经实现了一个从服务器获取这些数据的工厂。
我的问题是关于设计的——我是否应该获取这些数据并启动应用程序并将其附加到根范围并将其传递给所有需要它的控制器,或者将我的工厂注入到使用配置数据的每个控制器中并在工厂内部将配置存储在本地?
// 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];
}
};
}
])
好的做法是使用服务并在需要该信息的地方注入该服务。
请注意,您定义的不是工厂,而是服务。工厂是用于创建服务的函数,您使用 factory() 而不是 service() 或 provider() 来定义此服务这一事实是一个实现细节。
服务因此命名错误。 In 应该命名为 "configuration",而不是 "ConfigFactory"。服务通常以小写字母开头。
我的 firebase 服务器中有一些数据可以为客户端应用程序提供设置。 我已经实现了一个从服务器获取这些数据的工厂。
我的问题是关于设计的——我是否应该获取这些数据并启动应用程序并将其附加到根范围并将其传递给所有需要它的控制器,或者将我的工厂注入到使用配置数据的每个控制器中并在工厂内部将配置存储在本地?
// 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];
}
};
}
])
好的做法是使用服务并在需要该信息的地方注入该服务。
请注意,您定义的不是工厂,而是服务。工厂是用于创建服务的函数,您使用 factory() 而不是 service() 或 provider() 来定义此服务这一事实是一个实现细节。
服务因此命名错误。 In 应该命名为 "configuration",而不是 "ConfigFactory"。服务通常以小写字母开头。