$firebase 不会触发第二次

$firebase does not trigger second time

我正在尝试构建一个应用程序,其中包含每个日期的数据列表。我将 datastring 格式存储在 date 下。所以我创建了一个工厂

.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 未被触发。我知道这是因为数据存储在本地,但有什么解决方法。 ?请帮忙 。

谢谢

工厂是单例的,所以它们只被创建一次。如果日期发生变化,您应该重新创建 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