你好,我有以下JSON
$scope.Facilities=
[
{
Name: "-Select-",
Value: 0,
RegionNumber: 0
},
{
Name: "Facility1",
Value: 1,
RegionNumber: 1
},
{
Name: "Facility2",
Value: 2,
RegionNumber: 1
},
{
Name: "Facility3",
Value: 3,
RegionNumber: 2
}
];
$scope.Regions=
[
{
Name: "-Select-",
RegionNumber: 0
},
{
Name: "USA",
RegionNumber: 1
},
{
Name: "Mexico",
RegionNumber: 2
}
];
我会在我的应用程序中有两个下拉列表,其中一个Json会被分配给它。
无论何时选择Region,都会触发ng更改。我想要的是使Facility DDL更新它的值。它将只显示具有与所选地区的RegionNumber等效的RegionNumber的设施。
我怎样才能做到这一点?我使用的是Angular JS、MVC。。。
注意:-Select-Value必须始终显示,即使它的值为零并且不等于所选Region。
虽然像greengrassbluesky这样的数据结构可以简化结果,但您可以通过利用javascript过滤的onchange来完成同样的事情
$scope.Facilities = masterFacilities.filter(function (el) {
return regionNumber = el.RegionNumber == $scope.SelectedRegion || el.RegionNumber == 0;
});
下面是一个使用列表的例子。
我认为您需要一个如下的数据结构:
$scope.Regions=
[
{
Name: "-Select-",
facilities : {
facilityId: 1,
facilityName: "facility1"
},
{
facilityId: 2,
facilityName: "facility2"
}
},
{
Name: "USA",
facilities : [{
facilityId: 1,
facilityName: "facility1"
},
{
facilityId: 2,
facilityName: "facility2"
}]
},
];
所以,你可以参考它们如下:
对于Regions的下拉列表,您可以遍历上面的Data结构。将选定的Region存储在selectedRegion
中然后将其用于设施的下拉列表。