仅在刷新页面后才更新ng-bind

时间:2016-09-29 22:14:32

标签: angularjs apply watch ng-bind

使用$resource获取数据,页面包含上一页的数据,直到我刷新它。我读过它是因为角本身并不知道它已被更新。但即使使用$ watch和$applyAsync,它也无法正常工作。 ($apply给我一个摘要错误)。

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 个答案:

答案 0 :(得分:2)

您的代码对我来说很好,所以我认为这是一个路由问题。也许您可以尝试解析路由器中的资源而不是控制器中的资源。 https://github.com/angular-ui/ui-router/wiki#resolve

我也会在承诺解决时尝试分配:

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

要强制摘要,您可以尝试$ timeout而不是$ apply。 ($ timeout需要注入控制器。)如果在摘要期间调用$ apply会出错,$ timeout会等到当前摘要完成(它仍在内部使用$ apply)。

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

很抱歉,不是真正的答案 - 评论框有时会受到限制。