如何在仅提取数组中指定的属性的同时遍历数据集?
How can I iterate over a dataset while only extracting properties specified in an array?
我正在 Angular 做一个项目。我找到了 this question,但这不是我需要的。
我进行了一次 API 调用并获得了一个 JSON 对象,该对象具有二十多个属性。因此,用户可能具有以下属性,然后是一些:
user.Name
user.Nickname
user.DOB
user.FavoriteColor
user.Address
...
我也有一个类似这样的数组。
$scope.ThePropertiesIWantToShow = [
{ propertyID: 1, displayValue: 'Name' },
{ propertyID: 3 displayValue: 'DOB' },
{ propertyID: 5 displayValue: 'Address' },
我有一个 table,我想在其中显示此数据,但我只想显示某些属性(上面数组中的属性)。如果我想手动显示 ThePropertiesIWantToShow
中的所有内容,我可能会这样做:
<tr ng-repeat="user in users">
<td>{{user.Name}}</td>
<td>{{user.DOB}{</td>
<td>{{user.Address}{</td>
</tr>
但是,JSON 数据和 ThePropertiesIWantToShow
数组都大得多。我想知道如何使用 ng-repeat
来执行类似以下伪代码的操作,这样我就不必手动输入每个 属性。另外,如果我需要进行更改,我可以只更改数组,它会反映在多个地方:
for each user in users
for each property in ThePropertiesIWantToShow
<td>user.property</td>
根据之前链接的问题,我知道我可以做这样的事情来获得 all 属性:
<tr ng-repeat="user in users">
<td ng-repeat="(property, value) in user">{{value}}</td>
</tr>
但这给了我来自 API 调用的所有数据,我只想显示数组中为每个用户提供的属性。
如果我理解的很好,你正在尝试这样做:
在您的 Angular 控制器中声明此函数:
$scope.getUserProperty = function(user, property) {
return user[property];
}
然后用它来获取用户属性
<div ng-repeat="user in users">
<div ng-repeat="p in properties">
{{getUserProperty(user, p.displayValue)}}
</div>
</div>
您可能想要的是:
$scope.fields =['Name','DOB','Address'];
然后在视图中重复每一行中的字段:
<tr ng-repeat="user in users">
<td ng-repeat="field in fields">{{user[field]}}</td>
</tr>
我正在 Angular 做一个项目。我找到了 this question,但这不是我需要的。
我进行了一次 API 调用并获得了一个 JSON 对象,该对象具有二十多个属性。因此,用户可能具有以下属性,然后是一些:
user.Name
user.Nickname
user.DOB
user.FavoriteColor
user.Address
...
我也有一个类似这样的数组。
$scope.ThePropertiesIWantToShow = [
{ propertyID: 1, displayValue: 'Name' },
{ propertyID: 3 displayValue: 'DOB' },
{ propertyID: 5 displayValue: 'Address' },
我有一个 table,我想在其中显示此数据,但我只想显示某些属性(上面数组中的属性)。如果我想手动显示 ThePropertiesIWantToShow
中的所有内容,我可能会这样做:
<tr ng-repeat="user in users">
<td>{{user.Name}}</td>
<td>{{user.DOB}{</td>
<td>{{user.Address}{</td>
</tr>
但是,JSON 数据和 ThePropertiesIWantToShow
数组都大得多。我想知道如何使用 ng-repeat
来执行类似以下伪代码的操作,这样我就不必手动输入每个 属性。另外,如果我需要进行更改,我可以只更改数组,它会反映在多个地方:
for each user in users
for each property in ThePropertiesIWantToShow
<td>user.property</td>
根据之前链接的问题,我知道我可以做这样的事情来获得 all 属性:
<tr ng-repeat="user in users">
<td ng-repeat="(property, value) in user">{{value}}</td>
</tr>
但这给了我来自 API 调用的所有数据,我只想显示数组中为每个用户提供的属性。
如果我理解的很好,你正在尝试这样做:
在您的 Angular 控制器中声明此函数:
$scope.getUserProperty = function(user, property) {
return user[property];
}
然后用它来获取用户属性
<div ng-repeat="user in users">
<div ng-repeat="p in properties">
{{getUserProperty(user, p.displayValue)}}
</div>
</div>
您可能想要的是:
$scope.fields =['Name','DOB','Address'];
然后在视图中重复每一行中的字段:
<tr ng-repeat="user in users">
<td ng-repeat="field in fields">{{user[field]}}</td>
</tr>