AngularJS:从工厂获取数据并更新控制器范围和视图

AngularJS : Getting data from Factory and update Controller scope and view

大家好,对于我遇到的这个工厂和控制器问题,我真的需要帮助和建议。

  1. 我有一个从服务器获取数据的工厂

    sp.factory('homeFeed',['$window','$http','auth',function($window,$http,auth){
    var url = auth.url;
    var version = auth.version;
    var HomeFeed = {};
    
    HomeFeed.getFeeds = function(user){
        //setting variable for get request on home feed
        var req = {
            method: 'GET',
            url: url + version + '/Feed',
            headers: {
                'Content-Type': 'application/json; charset=utf-8',
                'Authorization': 'Bearer ' + token
            },
        }
    
        return $http(req).success(function(res){
            return res;
        });
    };
    
    return HomeFeed;
    }]);
    
  2. 控制器--

    sp.controller('HomeCtrl',['$scope','homeFeed','$window',function($scope,homeFeed,$window){
    //getting all the home feed data
    $scope.feeds = homeFeed.getFeeds(JSON.parse($window.localStorage['SP-User']))
    
    
    }]);
    

然而,在服务器响应后,我的视图没有更新,$scope.feeds 也没有更新。非常感谢您的帮助

当您进行异步 $http 调用时,该数据在该时间点将不可用。 ajax调用成功后可用。您需要使用 .then 函数,它将创建一个承诺链,并在 .success 函数 returns 一个数据时执行一个函数。

控制器

sp.controller('HomeCtrl',['$scope','homeFeed','$window',
   function($scope,homeFeed,$window){
     //getting all the home feed data
     homeFeed.getFeeds(JSON.parse($window.localStorage['SP-User']))
     .then(function(data){
        $scope.feeds = data 
     });
   }
]);