AngularJS中是否有一种方法可以转换类似于此Jquery方法的模型?

时间:2013-05-16 14:54:11

标签: jquery angularjs

以前的开发人员使用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对象转换为相同的字符串格式?

3 个答案:

答案 0 :(得分: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中你可以{{Model | json}}会在你的标记中打印出模型(所以你可以在它周围包裹textarea):

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

答案 1 :(得分:0)

var result = [];
angular.forEach($scope.Model, function(val, key){
  result.push({ name: key, value: val });
});

答案 2 :(得分: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可能会有所帮助。