2013-03-20 44 views
0

我正在製作一個不是100%'單頁'驅動的應用程序。當我輕鬆學習這個新的JS框架時,我只使用angular作爲'助手'。很多我的應用程序仍然控制着普通的舊的獲取和發佈,而不是角度資源或任何東西。如何使用angularjs嵌套表單?

我具有由軌(它有一個行動=「」等)創建的外部形狀。

裏面這種形式我有三個「名單」,有點像3種不同待辦事項列表,但在所有將要發送的時候,他們提交給導軌一個單一的形式。

在列表中的一個,用戶將看到一個文本框,他們可以添加新的任務。我試圖做到這一點,所以用戶可以在文本框中點擊「輸入」,並將其添加到模型中,但未提交父表單。

我讀過,我可以用ngForm與角度(使它看起來巢形式),但我不知道如何做到這一點或什麼是錯的。這裏是我的代碼:

main.js.coffee

app = angular.module("Messenger", []) 

app.factory "NewTasks", -> 
    NewTasks = [] 

@processNewCtrl = ["$scope", "NewTasks", ($scope, NewTasks) -> 
    $scope.tasks = NewTasks 

    $scope.addTask = -> 
    task = $scope.newTask 
    task.timestamp = new Date().getTime() 
    $scope.tasks.push(task) 
    $scope.newTask = {} 
] 

@processTomorrowCtrl = ["$scope", ($scope) -> 
] 

view.html.erb

<form action="/stuff"> 
    <!-- ... boring code--> 
    <div ng-controller="processNewCtrl"> 
     <!-- ... ng-repeat unordered list here for task in tasks --> 
     <div class="task"> 
      <angular ng-form ng-submit="addEntry()"> 
      <input checked="checked" disabled="disabled" type="checkbox"> 
      <input ng-model="newTask.description" type="text" autocomplete="off" placeholder="Additional Task description"> 
      </angular> 
     </div> 
    </div> 
    <!-- ... --> 
</form> 

回答

0

使用ng-formng-submit=mySaveCallback()

mySaveCallback()沿着應該處理過的數據,然後排序手動發佈到後端(使用$http$resource或其他)。

通常,您不會在AngularJS中使用傳統的<form action="submit.html">,因爲您通常在發送數據之前先處理數據,或者以某種方式更新AngularJS。使用傳統的表單請求還會使您更改可能不太理想的頁面。

現在如果你正在談論保持傳統方法(改變頁面和傳遞POST數據),我真的不知道如何做到這一點在Javascript的頂部我的頭腦(因爲這不是一個角度的具體問題)。

但在我看來,你就要去只是完全轉換到提交所有形式的異步使用AngularJS和ng-submit更好。而且將來也會更容易。