我在控制器中使用json调用但想使用factory(angularjs)

时间:2016-08-19 13:01:35

标签: javascript angularjs

我使用了一个控制器,以便使用一个工作正常的api,但我想使用工厂或服务来使用它并尝试了这么多次,但可能我对它没有那么多了解。我目前正在为AngularJs学习课程,所以如果我问一些愚蠢的话,我很抱歉。

也有人可以告诉我最好使用工厂或服务或其他什么。

这种方式运行正常:

HTML:

<div ng-controller="PromiseCtrl">
    <li ng-repeat="post in posts" >
        {{post.link}}<br/>
        {{post.title}}
    </li>
</div>

控制器:

.controller('PromiseCtrl', ['$scope', '$http', function($scope, $http) {
    $http.get('http://www.zemtv.com/wp-json/wp/v2/posts').then(function(value) {
        $scope.posts = value.data;
    });
}]);

这是我遇到问题的地方:

HTML:

<div ng-controller="PromiseCtrl">
    <li ng-repeat="post in posts" >
        {{post.link}}<br/>
        {{post.title}}
    </li>
</div>

控制器:

.controller('PromiseCtrl', ['$scope', '$http', function($scope, $http) {
    $http.get('http://www.zemtv.com/wp-json/wp/v2/posts').then(function(value) {
        $scope.posts = value.data;
    });
}])

工厂:(我认为我的用法不正确)

angular.module('confusionApp')
    .factory('menuFactory', function() {
        $http.get('http://www.zemtv.com/wp-json/wp/v2/posts').then(function(value) {
            var posts = value.data;
        });
});

1 个答案:

答案 0 :(得分:0)

我没有测试任何这个,但它是按照以下方式进行的:

angular.module('confusionApp')
    .factory('menuFactory', function() {
        return { 
            getPosts: function () {
                return $http.get('http://www.zemtv.com/wp-json/wp/v2/posts')
            }
        }
});

然后从控制器:

.controller('PromiseCtrl', ['$scope', '$http', 'menuFactory', function($scope, $http, menuFactory) {
    menuFactory.getPosts().then(function(response){
       $scope.posts = response.data;
    });
}]);

最好再详细了解服务的使用以及控制器如何注入和使用它们。