2014-10-30 83 views
0

我有一個頁面,其中有ng-init = find(),當我轉到其他頁面並對db執行某些操作時,原始頁面中的數據將發生更改。然後我將用戶重定向到原始頁面。我希望看到第一頁的變化。角度恢復服務不能正常工作

$scope.find = function() { 
    Stats.query 
     .then(function(stats){ 
       $scope.stats = stats; 
     }); 
}; 

其中統計是我與注射restangular創建的服務。該服務看起來像這樣:

angular.module('mean.stats').factory('Stats', ['Restangular', 
    function(Restangular) { 
    var stats = Restangular.all('stats'); 
    return { 
     query: stats.getList() 
    } 
}]); 

它不工作,因爲我的預期。但是如果我使用傳統的$資源方法,結果是正確的。

angular.module('mean.stats').factory('Stats', ['$resource', 
    function($resource) { 
    return $resource('stats/:statsId', { 
     statsId: '@_id' 
    }); 
}]); 

也後來我也想出了這個restangular的東西也正常工作。我不明白這是爲什麼...有誰知道發生了什麼?謝謝。

angular.module('mean.stats').factory('Stats', ['Restangular', 
    function(Restangular) { 
    var stats = Restangular.all('stats'); 
    return { 
     query: function(){ 
      return stats.customGETLIST(''); 
     } 
    } 
}]); 
+0

你能看到被打了一個電話瀏覽器的「網絡」控制檯?所以你有錯誤信息? – AlexHv 2014-10-30 17:42:08

+0

不是沒有錯誤信息。我看到這個put也是正確執行的。 – 2014-10-30 22:50:11

+0

如果console.log調用的結果與restangular有什麼關係?順便說一句你的第二個代碼示例中有丟失的括號,這是相當混亂:-) – AlexHv 2014-10-31 09:21:40

回答

1

在你的第二個代碼塊,您分配Stat.query通過getList()而不是函數調用getList()返回一個承諾。所以當定義Stat工廠時,請求只發送給服務器一次。爲了使其工作,首先要Stat.query一個函數調用getList()

angular.module('mean.stats').factory('Stats', ['Restangular', 
    function(Restangular) { 
    var stats = Restangular.all('stats'); 
    return { 
     query: function() { 
      return stats.getList(); 
     } 
    } 
}]); 

然後在您的$scope.find方法調用Stat.query:(在query之後添加()):

$scope.find = function() { 
    Stats.query() 
     .then(function(stats){ 
       $scope.stats = stats; 
     }); 
}; 
+0

明白了!亞這就是我認爲太謝謝了! – 2014-11-02 14:23:28