ng-repeat 对象以创建下拉列表
ng-repeat on objects to create drop down
我的对象看起来像:
var models = {
"Test1":{
"name":"Test1",
"members":
{
"T1":{//some more properties},
"T2":{//some more properties}
}
}
"Test2":{
"name":"Test2",
"members":
{
"T1":{//some more properties},
"T2":{//somemore properties}
}
}
}
假设用户选择了一个 属性 的对象 models,我想显示该选择的 属性 模型的成员 属性下拉列表中的对象。
例如。如果用户选择 Test1 属性,下拉列表应填充 T1 和 T2。
如有任何关于问题清晰度的建议,我们将不胜感激。
由于您无法更改您的对象,因此在您的 HTML 中您可以拥有:
<div ng-repeat="model in models">
<div>
<p ng-click="toggleVisibility(model.name)">Name: {{model.name}}</p>
<div ng-repeat="member in model.members" ng-if="model.visibility">
<p>Member Name: {{getMemberName(model.name, $index)}} </p>
<p>Member properties: {{getMemberProperties(model.name, $index)}} </p>
</div>
</div>
</div>
在你的 AngularJS 控制器上:
$scope.toggleVisibility = function (entry) {
$scope.models[entry].visibility = !$scope.models[entry].visibility;
};
$scope.getMemberName = function (entry, $index) {
return Object.keys($scope.models[entry].members)[$index];
};
$scope.getMemberProperties = function (entry, $index) {
var key = Object.keys($scope.models[entry].members)[$index];
return $scope.models[entry].members[key];
};
编辑:更改答案以满足要求。
我的对象看起来像:
var models = {
"Test1":{
"name":"Test1",
"members":
{
"T1":{//some more properties},
"T2":{//some more properties}
}
}
"Test2":{
"name":"Test2",
"members":
{
"T1":{//some more properties},
"T2":{//somemore properties}
}
}
}
假设用户选择了一个 属性 的对象 models,我想显示该选择的 属性 模型的成员 属性下拉列表中的对象。 例如。如果用户选择 Test1 属性,下拉列表应填充 T1 和 T2。
如有任何关于问题清晰度的建议,我们将不胜感激。
由于您无法更改您的对象,因此在您的 HTML 中您可以拥有:
<div ng-repeat="model in models">
<div>
<p ng-click="toggleVisibility(model.name)">Name: {{model.name}}</p>
<div ng-repeat="member in model.members" ng-if="model.visibility">
<p>Member Name: {{getMemberName(model.name, $index)}} </p>
<p>Member properties: {{getMemberProperties(model.name, $index)}} </p>
</div>
</div>
</div>
在你的 AngularJS 控制器上:
$scope.toggleVisibility = function (entry) {
$scope.models[entry].visibility = !$scope.models[entry].visibility;
};
$scope.getMemberName = function (entry, $index) {
return Object.keys($scope.models[entry].members)[$index];
};
$scope.getMemberProperties = function (entry, $index) {
var key = Object.keys($scope.models[entry].members)[$index];
return $scope.models[entry].members[key];
};
编辑:更改答案以满足要求。