以前的开发人员使用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对象转换为相同的字符串格式?
答案 0 :(得分:1)
在1行中使用2个现有的Angular方法:
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
):
答案 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可能会有所帮助。