2015-01-06 107 views
0

我正在嘗試構建一個應用程序,其中包含每個日期的數據列表。我有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

如果是改變局部值,你需要觸發新數據的加載本地了。所以就像你的工廠上的一個'getData(date)'方法,該方法返回那個日期的'$ firebase'。 –

回答

3

工廠是單身人士,所以他們只能創建一次。如果日期發生變化,您應該重新創建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

+0

嗨,@韋恩,那當然沒有工作。非常感謝 。 :) – 32teeths