2016-09-29 41 views
1

使用$resource獲取數據後,頁面有數據從之前的頁面,直到我刷新。我讀過這是因爲角本身並不知道它已被更新。但是,即使使用$ watch和$applyAsync,它也不起作用。 ($apply給了我一個摘要錯誤)。NG綁定更新不及時,不僅刷新頁面

angular.module('app.factory',[]) 
    .factory('teamService', ['$resource','$routeParams',function($resource, $routeParams){ 
     return $resource('/api/team/:id', {id: $routeParams.id},{ 
      update: { 
      method: 'PUT' 
      } 
     }); 
     }]); 

(function(){ 
    angular.module('app.team',[]) 
    .controller('TeamController',['teamService','$scope','$rootScope','$resource',function(teamService,$scope,$rootScope, $resource){ 

     $scope.teamid = teamService.query(); 
+1

@Kalamarico這不是很準確。 $ resource方法返回空數組或對象引用,在請求完成時填充 – charlietfl

+0

@charlietfl如何告訴$資源請求已完成?它目前工作的唯一方式是刷新頁面 – HHan

+0

嘗試從控制器中傳遞id,而不是 – charlietfl

回答

2

你的代碼看起來不錯,所以我認爲這是一個路由問題。也許你可以嘗試解析路由器中的資源而不是控制器中的資源。 https://github.com/angular-ui/ui-router/wiki#resolve

我也想嘗試分配時承諾解決:

teamService.query().$promise.then(function (result) { 
    $scope.teamid = result; 
} 

,並強制摘要你可以嘗試$超時而不是$適用。 ($ timeout需要注入到控制器中。)$ apply在摘要期間調用時會給出一個錯誤,$ timeout會等到當前摘要完成(它仍然在內部使用$ apply)。

teamService.query().$promise.then(function (result) { 
    $timeout(function(){ 
     $scope.teamid = result; 
    }); 
}); 

對不起,不是一個真正的答案 - 在評論框因此在時間限制。

+0

不幸的是,這並沒有爲我工作。現在我得到一個404錯誤。但我認爲這是正確的軌道,並將繼續努力。謝謝! – HHan