如何根据 JSON 对象的属性动态填充 Angular JS 中的显示对象
How to dynamically populate display objects in Angular JS based on properties from the JSON object.?
我正在从模块中读取以下 json 值.js
.controller('home.person',['$scope','$filter','personResource',function($scope,$filter,personResource) {
$scope.searchPerson = function() {
var params = $scope.search || {};
params.skip=0;
params.take =10;
$scope.personDetails =
{
"apiversion": "0.1",
"code": 200,
"status": "OK",
"mydata": {
"myrecords": [
{
"models": [
{
"name": "Selva",
"dob": "10/10/1981"
}
],
"Address1": "ABC Street",
"Address2": "Apt 123",
"City": "NewCity1",
"State": "Georgia"
},
{
"models": [
{
"name": "Kumar",
"dob": "10/10/1982"
}
],
"Address1": "BCD Street",
"Address2": "Apt 345",
"City": "NewCity2",
"State": "Ohio",
"Country":"USA"
},
{
"models": [
{
"name": "Pranav",
"dob": "10/10/1983"
}
],
"Address1": "EFG Street",
"Address2": "Apt 678",
"City": "NewCity3",
"State": "NewYork",
"Country":"USA",
"Zipcode" :"123456"
}
]
}
}
}
}])
现在我能够静态构建用户体验。但是我的每个记录集的键值对计数是不同的。所以我想根据当前记录集的计数动态构建我的 html。国家和邮政编码并非存在于所有记录中,因此我需要动态构建并填充 html 输出。大多数时候,我的 json 输出是动态的。我可能会获得产品详细信息而不是 PersonDetails,而不是 personDetails。
<div ng-show="personDetails.mydata.myrecords.length > 0" ng-repeat="recordSingle in personDetails.mydata.myrecords">
<div >
<span >Address1: {{recordSingle.Address1}}</span>
<span >Address2: {{recordSingle.Address2}}</span>
<span>City: {{recordSingle.City}}</span>
<span>State: {{recordSingle.State}}</span>
<span>Country: {{recordSingle.Country}}</span>
<span>Zipcode: {{recordSingle.Zipcode}}</span>
</div>
</div>
一种方法是使用ng-if
语句,用于可选的span
元素:
<span ng-if="recordSingle.Address1">Address1: {{recordSingle.Address1}}</span>
[更新#1:根据对问题的修订评论进行了更新]
[更新#2:修复了功能中的拼写错误并包含plunkr]
我现在明白您希望根据 JSON 对象的属性动态构建显示对象。在这种情况下,我将循环访问对象的属性。我将使用一个函数为每个对象生成此属性数组,以便您可以过滤掉任何原型链。我还会删除任何不需要的提议,例如内部$$hashKey
,也许还有数组对象,例如
在控制器中:
$scope.getPropertyNames = getPropertyNames;
function getPropertyNames(obj) {
var props = [];
for (var key in obj) {
if (obj.hasOwnProperty(key) && !angular.isArray(obj[key]) && key !== '$$hashKey') {
props.push(key);
}
}
return props;
}
然后在您的 HTML 视图中:
<div ng-repeat="record in personDetails.mydata.myrecords">
<div ng-repeat="prop in getPropertyNames(record)">
<span ng-bind="prop"></span>: <span ng-bind="record[prop]"></span>
</div>
</div>
这对我有用...看到这个普伦克。它动态显示数组中对象的每个属性(对象中可以有任何属性)。这不是你想要实现的目标吗?
相关文章:
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 将JSON对象传递给angular指令
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 将复杂对象从angular js传递到web api,它总是返回404
- 预期响应包含一个对象,但在angular js中得到一个数组错误
- Angular:使用选择列表选择过滤代码中的对象
- 在模板angular 2中显示JSON对象
- 如何按对象反转Angular ngRepeat的顺序's键,这些键是数字键
- 如何使用(this)访问Angular 2 http rxjs catch函数中的对象属性
- 向Angular作用域对象添加对象数组——TypeError
- $scope$观察数组中的一个特定对象——Angular JS控制器
- 返回并调用列表中的对象(ANGULAR.js)
- 未定义不是对象-Angular$rootScope.userMessage
- 试图发布带有参数的对象-angular js
- Angular返回$$state对象-Angular和Kinvey
- 创建映射对象angular js
- 如何使用对象&;angular&;即使'使用strict'语句
- 访问承诺对象angular的值
- 动态创建一个JSON对象Angular
- 如何将数组转换为数组中的对象?Angular和Javascript