$ firebase不会触发第二次

时间:2015-01-06 12:12:54

标签: angularjs firebase angularfire

我正在尝试构建一个应用,其中包含每个日期的数据列表。我将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没有被触发时。我知道这是因为数据存储在本地,但是什么是变通方法。 ?请帮忙 。

谢谢

1 个答案:

答案 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