简体   繁体   English

在AngularJs中遍历对象

[英]Iterating through object in AngularJs

I want to iterate through following json and create a dynamic form,. 我想遍历以下json并创建动态表单。 But, both its key and value are not same. 但是,它的键和值都不相同。 So how do I iterate it in JS? 那么如何在JS中迭代呢?

 ["register_form", { "name":{ "fielde":"textfield", "description":"" }, "pass":{ "pass1":{ "field":"password" }, "pass2":{ "field_type":"password" } }, "mail":{ "field":"textfield", "description":"" }, "field_first_name":{ "field_type":"textfield", "description":"" } } ] 

none of these working: 这些都不起作用:

 //Get the size of object = no. of fileds to be created var size = Object.keys(response[1]).length; console.log("Size..." + size); console.log("Keys.." + Object.keys(response[1])); var keys = []; var model = []; var label = []; keys.push(Object.keys(response[1])); for(var i=0;i<keys.length;i++) { angular.forEach(response[1].keys[i], function(key, value){ console.log(key + "..." + value); }); 

You can do it with Vanilla javascript like this: 您可以使用Vanilla javascript来做到这一点:

for (key in response[1]){
console.log(key)
};

JSFiddle JSFiddle

Try This 尝试这个

 var jimApp = angular.module("mainApp", []); jimApp.controller('mainCtrl', function($scope, $sce){ $scope.user = {}; $scope.register_form = {"name":{ "field_type":"text", "description":"" }, "pass1":{ "field_type":"password" }, "pass2":{ "field_type":"password" }, "mail":{ "field_type":"text", "description":"" }, "field_first_name":{ "field_type":"text", "description":"" } }; $scope.formData = { name : "" }; $scope.html = ""; angular.forEach($scope.register_form, function(value, key){ $scope.html = $scope.html + "<input type="+ value.field_type +" placeholder="+key+" >"; }); $scope.trustedHtml = $sce.trustAsHtml($scope.html); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-app="mainApp" ng-controller="mainCtrl"> <form> <div ng-bind-html="trustedHtml"> </div> </form> </div> 

Updated 更新

I think this is what you need. 我认为这就是您所需要的。 You can format the output whatever way you want. 您可以使用任何方式格式化输出。

 var data = { "name":{ "fielde":"textfield", "description":"" }, "pass":{ "pass1":{ "field":"password" }, "pass2":{ "field_type":"password" } }, "mail":{ "field":"textfield", "description":"" }, "field_first_name":{ "field_type":"textfield", "description":"" } }; function toArray(obj) { var result = [];var passName;var tempArray = []; for (var prop in obj) { var value = obj[prop]; if (typeof value === 'object') { $('#myForm').append("<br/><b>[[" + prop +"]]</b><br/>"); if ($.isNumeric(prop)) { passName = name + "[" + prop + "]"; } else { passName = name + "['" + prop + "']"; } tempArray = toArray(value, passName); $.each(tempArray, function (key, value) { result.push(value); }); } else { $('#myForm').append("<label>" + prop +"</label> : <span>" + obj[prop] + "</span><br/>"); result.push(name + "['" + prop + "']"); } } return result; } toArray(data); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="myForm"> </div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM