0

以前の開発者は、Jquery を使用してこの方法でフォーム データをシリアル化していました。

JSON.parse(JSON.stringify($('#form').serializeArray()))

これにより、次のような結果が生成されます。

 [
  {"name":"FirstName","value":"Roger"},
  {"name":"LastName","value":"Daughtry"},
  {"name":"SS__c","value":"123-45-6789"},
  {"name":"Birthdate","value":"05/05/2013"},
  {"name":"POB","value":"Portugal"},
  {"name":"Citizenship","value":"US"}
 ]

AngularJS の $scope.Model オブジェクトを同じ文字列形式に変換する簡単な方法はありますか?

4

3 に答える 3

1

1 行で 2 つの既存の Angular メソッドを使用する:

http://jsfiddle.net/9Qper/1/

function x($scope) {
    $scope.Model = {};
    $scope.Model.a = 'asdf';
    $scope.Model.b = 'asdffff';
    $scope.Model.c = true;

    console.log(angular.fromJson(angular.toJson($scope.Model)));
}

編集:あなたの質問には「文字列形式」と書かれていますが、コード例ではオブジェクトを返す JSON.parse を使用しています。オブジェクトが必要な場合は を使用$scope.Modelし、文字列が必要な場合は (必要に応じて)、angular.toJson($scope.Model)コードで文字列を取得するためだけを使用するか、HTML で {{ モデル| | json }} を使用すると、マークアップでモデルが出力されます (そのため、モデルをラップすることができますtextarea):

http://jsfiddle.net/9Qper/2/

于 2013-05-16T16:09:55.707 に答える
0
var result = [];
angular.forEach($scope.Model, function(val, key){
  result.push({ name: key, value: val });
});
于 2013-05-16T15:08:19.467 に答える
0

モデルの構造が事前にわかっている場合:

<form>
  <input type="text" ng-model="Model.field1">
  <input type="text" ng-model="Model.field2">
  <input type="text" ng-model="Model.field3">
</form>

オブジェクトに譲ります。scope.Model.

編集:モデル名がわからないが、プロパティの名前がどこかにある場合は、同様の方法でこれを回避できます。

<input type="text" ng-model="Model[field]" ng-repeat="field in NameOfFields">

このFiddleが役立つ場合があります。

于 2013-05-16T15:48:06.577 に答える