我正在关注scotch.io的tutorial建立一个RESTful API,同时试图熟悉MEAN堆栈。
到目前为止,我已经关注了很多内容,并让我的RESTful API按预期发送了JSON。我是否应该尝试通过浏览器地址栏访问它或者使用Postman进行试用它。
我在使用所述JSON响应时遇到问题。
根据教程,Angular应用程序分为 controllers 和 services 。该服务使用<option>
来调用RESTful端点。我怀疑的是我应该在哪里以及如何使用该服务来调用数据。
是否在控制器中? 服务是否以我可以将其响应添加到$http
的方式公开?
我是Angular /客户端路由的新手,所以请保持温和:)我的代码如下。
(博客)控制器:
$scope
服务
angular.module('BlogCtrl', []).controller('BlogController', function($scope, $http) {
$scope.tagline = 'Blog page!';
// can and should I call the service here?
});
路线:
angular.module('BlogService', []).factory('Post', ['$http', function($http) {
return {
// call to get all posts
get : function() {
return $http.get('/api/blog');
}
}]);
Angular App:
angular.module('appRoutes', []).config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
$routeProvider
// blog page that will use the BlogController
.when('/blog', {
templateUrl: 'views/blog.html',
controller: 'BlogController'
})
$locationProvider.html5Mode(true);
}]);
答案 0 :(得分:2)
是的,您可以在BlogController
。
但是,如果您想使用“Post”工厂,则应将其注入控制器
angular.module('BlogCtrl', []).controller('BlogController', function($scope, Post) {...}
并提出请求
Post.get().then(
function(response){console.log(response.data)},
function(errorResponse){/*...*/}
);
(我认为您还应该阅读有关$resource
(https://docs.angularjs.org/api/ngResource/service/ $资源)的内容。也许您可以使用它来替换{{1}}工厂;)
答案 1 :(得分:0)
您希望将服务注入控制器(或您将使用它的任何其他位置),然后使用注入的服务对象进行函数调用
angular.module('BlogCtrl', [])
.controller('BlogController', function($scope, Post) {
$scope.tagline = 'Blog page!';
// Use service to get data
Post.get().then(responsePromise){
$scope.someVariable = responsePromise.data;
}).catch(function(err){
console.warn('Ooops error!')
});
});