0
在我陈述我的问题之前,我可能完全错误,我在我的用例中如何使用工厂。很高兴知道更好的选择。两个工厂。人们应该知道什么时候有其他变化
所以,我有两个工厂。
Factory1
负责打击服务器,获取并存储该数据。
Factory2
不作任何REST呼叫。但是存储一组在REST调用时很有用的数据。
简单的问题是,为什么不Factory1存储该数据而不是Factory2。 Factory2背后的动机是这些数据会被其他工厂/控制器使用。所以,为了消除冗余,这看起来更好。
现在, 当从Factory1进行REST调用时,我可以简单地执行Factory2.getData然后使用它。但是我的用例有点复杂。 我需要Factory1在Factory2.getData()发生更改时触发调用。我们通常会在控制器等情况下使用$ scope。但是如何在这里实现同样的事情呢?
基本上,Factory2的数据发生变化时,我们如何知道Factory1?
代码:
servicesModule.factory('Factory2', function() {
var fObj = {},
filters;
fObj.setFilters = function(fs) {
filters = fs;
};
fObj.getFilters = function() {
return filters;
};
return fObj;
});
servicesModule.factory('Factory1', ['$http', '$q', 'Factory2', function($http, $q, Factory2) {
var fObj = {},
data;
fObj.fetchData = function(params) {
var filters = Factory2.getFilters();
// REST call here and set data to result
}
fObj.getData = function(){
return data;
}
}]);
使用'$ rootScope。$ broadcast' –