【问题标题】:Angularjs call synchronizationAngularjs调用同步
【发布时间】:2014-01-03 15:55:14
【问题描述】:

我正在使用 angularjs get 方法从服务器获取提要数组。这是我的控制器代码。

$scope.feeds = new Array();

    $scope.feeds = FeedService.getFeeds();
    console.debug("in controller : "+$scope.feeds);

我的 FeedService 代码是

getFeeds : function (){
            $http.get('/app/get').success(function(response){
                                console.debug(response);                    
                                 return response;

            }).error(function(){
                console.debug("failed");
            });
        }

在 firbug 控制台中,我得到 undefined for $scope.feeds 而在 FeedbackService 它正在打印 json 对象。我知道我收到undefined 因为代码是同步的。我能做些什么来处理这个问题。我的html是

<div ng-repeat = "feed in feeds">
    <feed feed-text={{feed.feedText}} feed-user={{feed.user}}></feed>
</div>

我没有在页面上打印任何内容。

【问题讨论】:

    标签: angularjs angularjs-directive angularjs-scope angularjs-ng-repeat angularjs-service


    【解决方案1】:

    一种方法是从您的$http 调用中返回一个promise,然后在您的控制器中解析它并将范围属性绑定到响应:

    getFeeds : function (){
            return $http.get('/app/get');
        }
    
    // in controller:
    
    Feedservice.getFeeds().then(function(promise){
       $scope.feeds = promise.data;
    })
    

    【讨论】:

    • 不客气。我推荐egghead.io 作为有关角度主题的视频教程的重要资源。他比以往任何时候都更好地解释了有关承诺的概念:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    相关资源
    最近更新 更多