角度restangular服务无法正常工作

时间:2014-10-30 17:23:14

标签: angularjs resources promise restangular angular-services

我有一个页面,其中包含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()
    }
}]);

它没有像我预期的那样工作。但如果我使用传统的$ resource方法,结果是正确的。

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('');
        }
    }
}]);

1 个答案:

答案 0 :(得分: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();
        }
    }
}]);

然后在Stat.query方法中调用$scope.find :(在()之后添加query):

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