我需要从我的Ruby on Rails应用程序获取数据,因为我创建了一个非常简单的AngularJS控制器:
# /app/assets/javascripts/angular/comments.js.coffee
app.controller 'CommentsController', ['$http', ($http) ->
store = this
store.comments = []
$http.get('/photos/3287.json').success (data) ->
store.comments = data
return
]
对于硬编码的:id
,它完全正常,但我仍然坚持如何使其动态更改。从Rails获取:id
的最简单方法是什么?
答案 0 :(得分:1)
我相信您可以在网址中加入:id
,然后将id
作为参数传递给get
。
# /app/assets/javascripts/angular/comments.js.coffee
app.controller 'CommentsController', ['$http', ($http) ->
store = this
store.comments = []
$http.get('/photos/:id.json', {id: photo.id}).success (data) ->
store.comments = data
return
]
编辑:我可能误会了。这就是你传递一个id到$http
的方式,但如果你需要获取id本身,请使用$resource
,因为Oleg已经回答了。
答案 1 :(得分:1)
我想,你想编辑它吗?因此,您不应该使用AJAX,您应该创建factory
并使用Angular $resource
,因此您使用:id
获取它,将其设置为$scope
,并在其中使用它将来
MORE ABOUT Angular $resource - 使用Angular方式
答案 2 :(得分:0)
谢谢大家。这是我的工作代码。
# comments.js.coffee
app = angular.module('comments', ['ngResource'])
app.controller 'CommentsController', ['$scope', 'GetComments', ($scope, GetComments) ->
store = this
store.response = []
$scope.init = (photo_id) ->
GetComments.get({id: photo_id}).$promise.then (data) ->
store.response = data.toJSON().comments
return
return
]
app.factory 'GetComments', ['$resource', ($resource) ->
$resource('/photos/:id.json', null)
]
此外,我必须将ng-init
添加到我的视图中:
# foo.html.haml
%div{'ng-controller' => 'CommentsController', 'ng-init' => "init(#{@photo.id})"}