0

100% '単一ページ' 駆動ではないアプリを作成しています。この新しい JS フレームワークを簡単に学習できるように、Angular を「ヘルパー」としてのみ使用しています。私のアプリの多くは、angular リソースなどではなく、昔ながらの get と post で制御されています。

レールによって作成された外側のフォームがあります(action="" などがあります)。

このフォーム内には 3 つの「リスト」があります。3 つの異なる種類の todo リストのようなものですが、送信時に Rails に送信される単一のフォームになっています。

リストの 1 つに、新しいタスクを追加できるテキスト ボックスが表示されます。ユーザーがテキストボックスで「Enter」を押してモデルに追加できるようにしようとしていますが、親フォームを送信する必要はありません。

angularでこれを行うことができることを読みましたngForm(フォームをネストするように見せるため) が、これを行う方法や何が間違っているのかわかりません。これが私のコードです:

main.js.コーヒー

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>
4

1 に答える 1

0

ng-formと一緒に使うng-submit=mySaveCallback()

mySaveCallback()データの並べ替えを処理してから、手動でバックエンドに投稿する必要があります ($httpまたは$resourceまたは何かを使用)。

<form action="submit.html">通常、データを送信する前にデータをマッサージしたり、AngularJS を何らかの方法で更新したりしたいため、AngularJS で従来型を使用することはありません。従来のフォーム リクエストを使用すると、ページを変更することにもなりますが、これも望ましくない場合があります。

従来のアプローチ (ページを変更して POST データを渡す) を維持することについて話している場合、正直に言って、Javascript で私のノギンの上からそれを行う方法がわかりません (それは Angular 固有の質問ではないため)。

しかし、私の意見では、AngularJS とng-submit. また、今後の作業も容易になります。

于 2013-03-20T23:16:12.367 に答える