我正在尝试构建一个应用,其中包含每个日期的数据列表。我将data
存储在date
格式下的string
下。所以我创建了一个工厂
.factory('CustomResource',function(UserService,$firebase){
var ref=new Firebase("https:/<url>/days/'+UserService.today.toDateString()+'/data');
return $firebase(ref);
});
并且在控制器中我设置了一个监视日期变量,该变量由点击或日历更改。
$scope.$watch('today',function(d){
CustomResource.$asArray().$loaded().then(function (eee) {
$scope.eeees = eee;
});
第一次加载应用时,所有数据都按预期加载。但是当我改变日期$ firebase没有被触发时。我知道这是因为数据存储在本地,但是什么是变通方法。 ?请帮忙 。
谢谢
答案 0 :(得分:3)
工厂是单身人士,所以他们只创造一次。如果日期更改,您应该重新创建firebase对象。我还建议将firebase加载代码放在工厂本身,以便可以重复使用,并将数据加载代码与控制器分开
app.factory('CustomResource',function(UserService,$firebase){
var getData = function () {
var ref=new Firebase('https:/<url>/days/'+UserService.today.toDateString()+'/data');
return $firebase(ref).$asArray().$loaded();
};
return {
getData: getData
};
});
然后你就可以使用它:
$scope.$watch('today',function(d){
CustomResource.getData().then(function (exp) {
$scope.expenses = exp;
});
});
我将此作为使用数据服务的指南:https://github.com/johnpapa/angularjs-styleguide#data-services