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)which 将在代码中为你获取字符串,或者在你的 HTML 中你可以 {{ Model | 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">

这个小提琴可能会有所帮助。

于 2013-05-16T15:48:06.577 回答