ng-bind не обновляется, только после обновления страницы

С помощью $resource чтобы получить данные, на страницах есть данные с предыдущей страницы, пока я не обновлю их. Я читал, что это потому, что сам Angular не знает, что он был обновлен. Однако даже после использования $ 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 ответ

Ваш код выглядит хорошо для меня, поэтому я думаю, что это проблема маршрутизации. Может быть, вы могли бы попытаться разрешить ресурс в маршрутизаторе, а не в контроллере. https://github.com/angular-ui/ui-router/wiki

Я также попытался бы назначить, когда обещание разрешается:

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;
    });
});

Извините, но не реальный ответ - поле для комментариев иногда так ограничено.

Другие вопросы по тегам