我一直在努力將基於Railscast的AngularJS實現到我的Rails應用程序中作爲起點。我的問題類似於這個問題:Angular JS ngResource with nested resources,但我還沒有找到解決我的問題。使用AngularJS檢索Rails中的嵌套資源
目前我有一個嵌套的資源,我通過部分顯示在父資源的視圖上。我需要在查詢供應PROJECT_ID,以獲取任務,所以我必須:
app.factory "Task", ["$resource", ($resource) ->
$resource("/projects/:project_id/tasks/:id", {project_id: "@project_id", id: "@id"}, {update: {method: "PUT"}})
]
@TaskCtrl = ["$scope", "Task", ($scope, Task) ->
$scope.tasks = Task.query({project_id: "@project_id", id: "@id"})
我的問題是,我怎麼設置視圖「@project_id」,這樣在最後一行我例如值可以在控制器中訪問?我試圖用NG-INIT:
<div ng-controller="TaskCtrl" ng-init="project_id = <%= @project.id %>">
然而,一旦在我TaskCtrl控制器的PROJECT_ID'是空白的,和 '$ scope.project_id' 也不起作用。任何幫助表示讚賞。
感謝您的答覆,奧利弗。問題:如果正在通過ProjectID控制器訪問ng-init,爲什麼我不能將project_id跨度移動到任務控制器中?當然,我是angularjs的新手,但是如果值包含在Controller中,它們應該可以從範圍訪問。 – Drew
當然,你可以做到這一點,但你仍然需要$監視project_id,因爲它沒有控制器init的值。但是如果你需要另一個控制器中的project_id,它是同級別的TaskCtrl,它不會看到project_id,只有孩子會。那是服務出現的地方。 – Oliver
非常感謝您的幫助,但這對我來說並不是很有用...我使用坤寶來傳遞價值。在AngularJS中,從視圖中獲取正常字段值應該會更容易一些。 – Drew