在代码AngularJS中筛选Json



你好,我有以下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中然后将其用于设施的下拉列表。

最新更新