我使用了一个控制器,以便使用一个工作正常的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;
});
});
答案 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;
});
}]);
最好再详细了解服务的使用以及控制器如何注入和使用它们。