AngularJS:从Factory获取数据并更新Controller范围和视图

时间:2015-08-03 20:31:11

标签: javascript angularjs angularjs-service angularjs-controller angular-promise

大家好,我真的需要有关此工厂和控制器问题的帮助和建议。

  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']))
    
    
    }]);
    
  3. 然而,在服务器响应后,我的视图没有更新,$ scope.feeds也没有更新。非常感谢您的帮助

1 个答案:

答案 0 :(得分:1)

当你正在进行异步.then调用时,那个数据在那个时刻就不可用了。当ajax调用成功时,它将可用。您需要使用.success函数创建一个promise链,并在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 }); } ]); 函数返回数据时执行函数。

<强>控制器

 browser.actions().click($('.portal_element_image')).perform()