在自定义工厂服务中使用$ http

时间:2019-03-05 12:52:51

标签: angularjs

我有两项服务。只需返回一个可以正常工作的字符串,并在完美视图上显示。但是另一个函数对后端执行$ http调用。 $ http调用工作正常,但无法将结果传递到控制器

(function(){

var videoStoreApp = angular.module('videoStoreApp', ['ui.router']);


videoStoreApp.factory('videoListService', function($http, $rootScope){

    var myService = {};   

    myService.getData = function()
    {           

        return $http({
           method: 'GET',
           url: 'app/services/getDvd.php'
        }).then(function(data){                          
             var returnObj = {
                 complete:true,
                 data: data.data
             };
             return returnObj;
        });       
    };   

    myService.getSum =  function()
    {
        return 'services test';
    };

    return myService;
});
})();

这就是我从控制器调用服务的方式...

angular.module('videoStoreApp').component('videoList', {

    templateUrl: 'app/views/videoList.html',
    controller: function videoListFunction($http,$scope,videoListService){

    $scope.test3 = videoListService.getSum();
    $scope.dvd =  videoListService.getData();
 };
}
});

有人可以帮忙吗?这是我第一次在堆栈流上发布问题

2 个答案:

答案 0 :(得分:0)

我认为您应该替换此行

$scope.dvd =  videoListService.getData();

与此

videoListService.getData().then(function(data){
    $scope.dvd = data;
});

因为,myService.getData返回了一个承诺。您可能不需要承诺,但是您需要价值。承诺解决后,您所需的值将在承诺的then函数中可用。

答案 1 :(得分:0)

这里是标记

            <ul>
                <li ng-repeat="dvd in $ctrl.dvd">
                    <a href="" ng-click="selectMovie(dvd.film_id)">{{dvd.title}}</a>                        
                </li>
            </ul>