26

angularjsの関数をシリアル化する方法はありますか?

私の投稿は今このように見えます。

$scope.signup_submit = function () {
  var formData = {
    username: $scope.username,
    full_name: $scope.full_name,
    email: $scope.email,
    password: $scope.password,
    confirm_password: $scope.confirm_password
  }

  $http({
    method: "POST",
    url: '/signup',
    data: formData,
  }).success(function (data) {
    if (data.status == 'success') {
      alert('all okay');
    } else {
      alert(data.msg)
    }
  });
}
4

1 に答える 1

66

これは、AngularJS を使用してフォーム データにアクセスする方法ではありません。フォーム内のデータは、スコープ内にバインドする必要があります。

したがって、すべてのデータ構造を含む $scope.formData などのオブジェクトを使用し、ng-model を使用して各フォーム要素をこれにバインドする必要があります。

例えば:

http://jsfiddle.net/rd13/AvGKj/13/

<form ng-controller="MyCtrl" ng-submit="submit()">
    <input type="text" name="name" ng-model="formData.name">
    <input type="text" name="address" ng-model="formData.address">
    <input type="submit" value="Submit Form">
</form>

function MyCtrl($scope) {
    $scope.formData = {};

    $scope.submit = function() {   
        console.log(this.formData);
    };
}

上記のフォームが送信されると、$scope.formData にはフォームのオブジェクトが含まれ、これを AJAX リクエストで渡すことができます。例えば:

Object {name: "stu", address: "england"} 

あなたの質問に答えるために、AngularJS を使用してフォーム データを「シリアル化」するより良い方法はありません。

ただし、jQuery: $element.serialize() を使用することもできますが、Angular を適切に使用したい場合は、上記の方法を使用してください。

于 2013-04-08T16:23:28.210 に答える