AngularJS:我如何将ID传递给show动作?

时间:2013-08-06 19:08:38

标签: ruby-on-rails angularjs angularjs-resource

我刚刚学习AngularJS。我有以下JSON端点

/api/v1/leaderboards/:id

返回与ID对应的排行榜。

我有以下AngularJS服务:

App.factory 'Leaderboard', ['$resource', ($resource) ->
  $resource '/api/v1/leaderboards/:id', id: '@id'
]

这个AngularJS控制器:

App.controller 'LeaderboardsCtrl', ['$scope', 'Leaderboard', ($scope, Leaderboard) ->
  $scope.selectedLeaderboard = Leaderboard.query()
]

这是我的观点(以haml为单位):

.leaderboard{"ng-app" => 'Leaderboards', id:"ng-app"}
  %h4.title
    Leaderboard Title
  .leader-section{'ng-controller' => "LeaderboardsCtrl"}
    .leader-content{'ng-show' => "selectedLeaderboard", 'ng-repeat' => "leader in selectedLeaderboard"}
      .media.award-group
        %a.pull-left{href: "{{leader.user.path}}"}
          %img.media-object{src: "{{leader.user.small_pic_url}}"}
        .media-body
          %h4.media-heading
            %a.leader-name{href: "{{leader.user.path}}"}
              {{leader.user.name}}
            .metric.pull-right
              {{leader.count}}

当我加载页面时,我在控制台中看到此错误:

GET http://localhost:3000/api/v1/leaderboards 404 (Not Found)

如果我用实际的排行榜ID替换:id,那么一切正常。但是如何从视图级别传递该ID?

1 个答案:

答案 0 :(得分:0)

App.controller 'LeaderboardsCtrl', ['$scope', 'Leaderboard', ($scope, Leaderboard) ->
  $scope.selectedLeaderboard = Leaderboard.query({id: 'count-receiver'})
]

只需将ID传递给服务,如上所述。