2014-11-22 139 views
1

我想要獲取數據庫中所有帖子的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),但是它深深地埋在一些大對象內。

如何在無序列表中顯示帖子?

編輯

按照丹的建議,我已經改變了控制器這樣的:

angular.module('AngularRails') 
    .controller('PostsController', function($scope, $http) { 
    $http.get('/posts.json').success(function(data) { 
     $scope.posts = data; 
    }); 
    }); 

沒有雪茄。

+0

能否請您發佈迴應? – cthulhu 2014-11-22 13:49:52

回答

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"] 
+0

嘿,丹!感謝您的建議,但這似乎不起作用。我用我試過的東西更新了原文。我確實試圖使用其餘的參數,但我很確定它可以縮短爲一個(糾正我,如果我錯了)。 – 2014-11-22 09:04:17

+0

@DylanRichards我用一個更好的例子更新了答案,它可能會有助於看到你在軌道上做什麼,但這應該有所幫助。你也是正確的,成功回調中的額外參數是不需要的 - 這只是爲了說明。讓我知道如果幫助! (這裏的js是coffeescript!) – 2014-11-22 18:27:57