Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS:服务不向控制器返回变量_Javascript_Angularjs_Angularjs Service - Fatal编程技术网

Javascript AngularJS:服务不向控制器返回变量

Javascript AngularJS:服务不向控制器返回变量,javascript,angularjs,angularjs-service,Javascript,Angularjs,Angularjs Service,我的应用程序有一个服务,应该返回一组对象(来自twitter api的tweets),如下所示: .service('twitterService', function($http) { this.getTweets = function(){ $http.get('http://example.com/?json=get_twitter_sidebar').success( function(data, status, headers, conf

我的应用程序有一个服务,应该返回一组对象(来自twitter api的tweets),如下所示:

.service('twitterService', function($http) {
    this.getTweets = function(){
        $http.get('http://example.com/?json=get_twitter_sidebar').success(
            function(data, status, headers, config) {
                if (data.status == 'ok') {
                    return data.feed;
                } else {
                    return 'Error Retrieving Feed'
                }
            });
    }

})
这项服务似乎有效;它调用api并返回所需的对象数组(我使用
console.log
进行验证)。但是,我似乎无法将返回的数组传递给我的控制器:

var TopPageCtrl = function($scope, $window, $http, twitterService) {
    $scope.feed = twitterService.getTweets();
};

当我使用console.log($scope.feed)时,它返回undefined。我尝试过无数种方法,但似乎都不管用。我做错了什么?

也许这是在回报一个需要解决的承诺?试试像

var getFeed = twitterService.getTweets();
getFeed.then(function (feed) {
    $scope.feed = feed;
});

也许它是在回报一个需要解决的承诺?试试像

var getFeed = twitterService.getTweets();
getFeed.then(function (feed) {
    $scope.feed = feed;
});
还债

.service('twitterService', function($http) {
this.getTweets = function(){
    var p = $http.get('http://example.com/?json=get_twitter_sidebar').success(
        function(data, status, headers, config) {
            if (data.status == 'ok') {
                return data.feed;
            } else {
                return 'Error Retrieving Feed';
            }
        });
     return p;
}});


var TopPageCtrl = function($scope, $window, $http, twitterService) {
twitterService.getTweets().then(function (response) {
  $scope.feed = response;
};};
还债

.service('twitterService', function($http) {
this.getTweets = function(){
    var p = $http.get('http://example.com/?json=get_twitter_sidebar').success(
        function(data, status, headers, config) {
            if (data.status == 'ok') {
                return data.feed;
            } else {
                return 'Error Retrieving Feed';
            }
        });
     return p;
}});


var TopPageCtrl = function($scope, $window, $http, twitterService) {
twitterService.getTweets().then(function (response) {
  $scope.feed = response;
};};

$scope.feed=twitterService.getTweets()

你的函数没有返回任何东西,这就是为什么你得到“未定义”的原因。。 试试这个:

this.getTweets = function(){
                return $http.get('http://example.com/?json=get_twitter_sidebar').success(
                    function(data, status, headers, config) {
                        if (data.status == 'ok') {
                            return data.feed;
                        } else {
                            return 'Error Retrieving Feed'
                        }
                    });
            }

twitterService.getTweets().then(function (response){...});

$scope.feed=twitterService.getTweets()

你的函数没有返回任何东西,这就是为什么你得到“未定义”的原因。。 试试这个:

this.getTweets = function(){
                return $http.get('http://example.com/?json=get_twitter_sidebar').success(
                    function(data, status, headers, config) {
                        if (data.status == 'ok') {
                            return data.feed;
                        } else {
                            return 'Error Retrieving Feed'
                        }
                    });
            }

twitterService.getTweets().then(function (response){...});