2014-10-30 65 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