我想获取数据库中所有帖子的JSON对象。
这是模块:
angular
.module('AngularRails', [
'ngRoute',
'templates'
]).config(function($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'home.html',
controller: 'HomeCtrl'
});
});
控制器:
angular.module('AngularRails')
.controller('PostsController', function($scope, $http) {
var posts = $http.get('/posts.json').success(function(data){
return data;
});
$scope.posts = posts;
});
观点:
<h1>The Home View!</h1>
<ul>
<li ng-repeat='post in posts'>
{{ post.title }}
</li>
</ul>
当我检查控制台时,我可以看到请求是针对指定的URL(并且可以看到我想要的JSON),但它深深地埋藏在某个大对象中。
如何在无序列表中显示帖子?
修改
根据Dan的建议,我已将控制器更改为:
angular.module('AngularRails')
.controller('PostsController', function($scope, $http) {
$http.get('/posts.json').success(function(data) {
$scope.posts = data;
});
});
没有雪茄。
答案 0 :(得分:2)
您要查找的数据将作为参数传递给$http
的成功回调。您的示例中的$scope.posts
是整个http对象。尝试这样的事情:
angular.module('AngularRails').controller('PostsController', function($scope, $http) {
$http.get('/posts.json').success(function(postData, status, headers, config){
$scope.posts = postData; // this is the JSON from the web request
});
// $scope.posts = posts; <-- this was the $http promise object
});
示例强>
Rails控制器:
def list
posts = { posts: %w(post1 post2 post3 post4) } # Or ActiveRecord query etc...
respond_to do |format|
format.json { render json: posts }
end
end
Angualr控制器:
$http.get('http://localhost:3000/posts/list.json').success (data) ->
$scope.posts = data.posts
console.log $scope.posts // ["post1", "post2", "post3", "post4"]