Angularjs ng重复中的角度滤波器

Angularjs ng重复中的角度滤波器,angularjs,filter,Angularjs,Filter,当我的表中只有一行时,我有一个过滤器可以正常工作。但是,当我有多行时,如何在特定行(索引)进行过滤?在本例中,我希望按国家id筛选以显示特定城市: 我的Html: <tr ng-repeat="country in countries"> <select ng-model="country.id" ng-change="selectCountry($index,country.id)"

当我的表中只有一行时,我有一个过滤器可以正常工作。但是,当我有多行时,如何在特定行(索引)进行过滤?在本例中,我希望按国家id筛选以显示特定城市:

我的Html:

 <tr ng-repeat="country in countries">
     <select ng-model="country.id" ng-change="selectCountry($index,country.id)"
                                            ng-options="country.id as country.name for country in countries">
                                        <option value="">Country</option>
                                    </select>

    <select ng-model="city.id" ng-change="selectCity($index,city.id)"
                                            ng-options="city.id as city.name for city in cities" | filter:filterByCities>
                                        <option value="">City</option>
                                    </select>
</tr>
但该过滤器适用于表中的所有行,而不仅仅适用于我选择过滤器的行


感谢您的帮助

您的代码没有多大意义。我建议您更改其中的第三个数组,该数组与行的模型相对应

您不希望所有行的selectedCities都相同。表中的每个输入城市都应按同一行上国家的输入进行筛选。您需要一个模型来跟踪这些更改,这是
数组的目标:

var-app=angular.module('plunker',[]);
应用程序控制器('MainCtrl',函数($scope){
$scope.rows=[{
国家ID:4,城市ID:2
}, {}, {}];
$scope.countries=[{
“id”:1,
“名称”:“美国”
}, {
“id”:4,
“姓名”:“加拿大”
}];
$scope.cities=[{
“id”:1,
“姓名”:“迈阿密”,
“countryId”:1
}, {
“id”:2,
“姓名”:“温哥华”,
“countryId”:4
}, {
“id”:3,
“名称”:“多伦多”,
“countryId”:4
},{
“id”:1,
“名称”:“洛杉矶”,
“countryId”:1
}];
})

国家
城市
国家
城市

您编写的代码没有多大意义。我建议您更改其中的第三个数组,该数组与行的模型相对应

您不希望所有行的selectedCities都相同。表中的每个输入城市都应按同一行上国家的输入进行筛选。您需要一个模型来跟踪这些更改,这是
数组的目标:

var-app=angular.module('plunker',[]);
应用程序控制器('MainCtrl',函数($scope){
$scope.rows=[{
国家ID:4,城市ID:2
}, {}, {}];
$scope.countries=[{
“id”:1,
“名称”:“美国”
}, {
“id”:4,
“姓名”:“加拿大”
}];
$scope.cities=[{
“id”:1,
“姓名”:“迈阿密”,
“countryId”:1
}, {
“id”:2,
“姓名”:“温哥华”,
“countryId”:4
}, {
“id”:3,
“名称”:“多伦多”,
“countryId”:4
},{
“id”:1,
“名称”:“洛杉矶”,
“countryId”:1
}];
})

国家
城市
国家
城市


$index
将与过滤器不同,无法使用。此处未显示表格,因此不清楚存在什么问题。还应该显示示例数据,因为
indexOf
可能不正确,我使用的是ng repeat,这显然没有澄清太多或概述具体问题。建议您在中创建一个演示。另外,请注意浏览器控制台中出现的任何错误当我选择国家/地区时,我希望在选择国家/地区时按同一行中的城市进行筛选。需要一些数据样本和演示将是最好的选择
$index
将与筛选器不同,无法使用。此处未显示表格,因此不清楚存在什么问题。还应该显示示例数据,因为
indexOf
可能不正确,我使用的是ng repeat,这显然没有澄清太多或概述具体问题。建议您在中创建一个演示。另外,请注意浏览器控制台中出现的任何错误。当我选择一个国家时,我希望在选择国家时按同一行中的城市进行筛选。需要一些数据样本和演示将是最好的地方。在sof中的一次讨论中,我的代码被投票增加到16。我接受了它,我希望它能改变它,使它能用于多行。谢谢你的例子!你记得那个帖子吗?你有链接吗?也许我能帮你理解为什么它不好;)我会找到它并发送给您:)。但是如果我想将country.id保留为country.name呢?你的例子最终对我不起作用,而不是用country.name.Cyril Gandon来代替country,这就是我开始使用另一种方法的原因。我需要这个:选择ng model=“row.id”而不是ng model=“row.country”,因为我想加载id而不是country对象更新为stock country id而不是country对象在sof中的一次讨论中,我的代码被提升到16。我接受了它,我希望它能改变它,使它能用于多行。谢谢你的例子!你记得那个帖子吗?你有链接吗?也许我能帮你理解为什么它不好;)我会找到它并发送给您:)。但是如果我想将country.id保留为country.name呢?你的例子最终对我不起作用,而不是用country.name.Cyril Gandon来代替country,这就是我开始使用另一种方法的原因。我需要这样做:选择ng model=“row.id”而不是ng model=“row.country”,因为我想加载id而不是更新为股票国家id的国家对象,而不是国家对象
$scope.countries = {
     {"id" : 1, "name" : "USA" },
     {"id" : 2, "name" : "CANADA" }
 }

 $scope.cities= {
     {"id" : 1, "name" : "MIAMI" },
     {"id" : 2, "name" : "TORONTO" }
 }


$scope.selectCountry = function (index, value) {

                if (value ==1) {
                    $scope.selectedCities = [1, 2];
                }
                else if (value == 2) {
                    $scope.selectedCities = [3, 4];
                }
                $scope.filterByCities = function (type) {
                    return ($scope.selectedCities.indexOf(type.id,index) !== -1);
                };
            }