1

このセットアップを使用して、AngularJS でフォ​​ームを保存できます。

name="" 属性で定義されているように、データ値を ($save メソッドを介して) サーバーにプッシュしたいと考えています。

したがって、このように送信されたフォームは次のようになります。

理想形データ

{
  book: {
    word : '...',
    book : '...',
    page : '...'
  }
}

ただし、代わりにハッシュとして直接送信されます (内部の book ブロックなし)。

私のフォームとコントローラーは次のようになります。

マイフォーム

<div>
  <form data-ng-submit="save()">
    <ol class="fields">
      <li>
        <div class="label">
          <label for="word">Word: </label>
        </div>
        <div class="details">
          <input type="text" name="word[word]" data-ng-model="word.word" />
        </div>
      </li>
      <li>
        <div class="label">
          <label for="book">book: </label>
        </div>
        <div class="details">
          <input type="text" name="word[book]" data-ng-model="word.book" />
        </div>
      </li>
      <li>
        <div class="label">
          <label for="page">page: </label>
        </div>
        <div class="details">
          <input type="text" name="word[page]" data-ng-model="word.page" />
        </div>
      </li>
    </ol>
    <nav class="actions">
      <input type="submit" value="save" />
    </nav>
  </form>
</div>

私のコントローラー(Angular)

var saveCtrl = function($scope, $routeParams, Word, $location) {
  $scope.word = Word.get({
    id : $routeParams.id 
  });
  $scope.save = function() {
    $scope.word.$save({
      id : $scope.word.id
    });
    $location.path('/').replace();
  };
}

何か案は?

4

1 に答える 1

1

おそらく、次のようなものがコントローラーで機能します。

Word.save({
  id : $scope.word.id
}, {
  book : { word: $scope.book }
});

docsから取得した を設定しpostDataて、投稿されているデフォルトのデータをオーバーライドする必要があると思います。

GET 以外の「クラス」アクション: Resource.action([parameters], postData, [success], [error])

于 2012-07-22T10:10:16.297 に答える