Angularjs 从ng选项选择中筛选ng选项
我希望解决三个问题 在我的应用程序页面中,我有一个选择用于州,另一个选择用于县。对于国家,我有:Angularjs 从ng选项选择中筛选ng选项,angularjs,angularjs-ng-repeat,ng-options,angularjs-ng-options,Angularjs,Angularjs Ng Repeat,Ng Options,Angularjs Ng Options,我希望解决三个问题 在我的应用程序页面中,我有一个选择用于州,另一个选择用于县。对于国家,我有: <select ng-model="filter.stateID" ng-options="item.stateID as item.state for item in st_option"> </select> 对于我的县选择,我有: <select ng-model="filter.countyID" ng-options="item.countyID as it
<select ng-model="filter.stateID" ng-options="item.stateID as item.state for item in st_option">
</select>
对于我的县选择,我有:
<select ng-model="filter.countyID" ng-options="item.countyID as item.county for item in co_option">
</select>
这是我的ng repeat
:
<div ng-repeat="project in projects | filter:filter">
<div>
State: {{project.state}}<br>
County: {{project.county}}<br>
<span ng-hide="{{project.stateID}}"></span>
<span ng-hide="{{project.countyID}}"></span>
</div>
</div>
状态:{{project.State}}
县:{{project.country}}
因此,正如您所看到的,我在州选择中使用了stateID
,在县选择中,我在县数据集中的co_state_id
中设置了相应的州id
我想做几件事:
stateID
/co\u state\u id
stateID
过滤ng repeat
,然后按countyID
过滤我还没有找到将
filter.stateID
设置为true
的方法,也没有找到通过数字而不是字符串进行过滤的方法。当我按stateID筛选时,我得到的结果是混合的,因为一些stateID
中可能有“1”..通常每个帖子你只想问一个问题,但我会尝试一下这三个问题
第1部分:为过滤器.stateID
添加一个ng show
。由于无法取消选择状态,如果角度为^1.3,则可以使用一次性绑定
<select ng-show="::filter.stateID" ng-model="filter.countyID" ng-options="item.countyID as item.county for item in co_option">
第三部分:
您正在为过滤器使用pattern对象,如果id的值为1,则无所谓:
对象:模式对象可用于过滤数组包含的对象的特定属性。例如{name:“M”,phone:“1”}谓词将返回一个项目数组,其中属性名称包含“M”,属性phone包含“1”。可以使用特殊属性名$(如{$:“text”})来接受与对象的任何属性或其嵌套对象属性的匹配。这相当于上面描述的简单子字符串与字符串匹配。谓词可以通过在字符串前面加上!。例如{name:“!M”}谓词将返回属性名不包含“M”的项数组
工作片段
var-app=angular.module('app',[]);
app.controller('myController',函数($scope){
$scope.projects=[{
名称:“项目1”,
声明:“CA”,
stateID:'5',
县:“橙色”,
countyID:'191'
}, {
名称:“项目2”,
声明:“CA”,
stateID:'5',
县:'洛杉矶',
countyID:'190'
}, {
名称:“项目3”,
声明:“CA”,
stateID:'5',
县:“橙色”,
countyID:'191'
}, {
名称:“项目4”,
声明:“MadeUp”,
stateID:'1',
县:'马德普',
countyID:'190'
}];
$scope.st_选项=[{
州:“加利福尼亚”,
国家编号:“5”
}, {
州:“亚利桑那州”,
国家编号:“3”
}, {
州:“俄勒冈州”,
国家编号:“38”
}, {
州:“德克萨斯州”,
国家编号:“44”
}, {
州:“犹他州”,
国家编号:“45”
}, {
州:“内华达州”,
国家编号:“29”
}];
$scope.co_选项=[{
县:“橙色”,
countyID:“191”,
co_州id:“5”
}, {
县:“多个县”,
countyID:“3178”,
co_州id:“3”
}, {
县:“索诺玛”,
countyID:“218”,
co_州id:“38”
}, {
郡:“洛杉矶”,
countyID:“190”,
co_州id:“44”
}];
$scope.filter={};
});代码>
名称:{{project.Name}
状态:{{project.State}
县:{{project.country}
add fiddle或plunkr plessehi@pankajparkar,请参阅下面的DTing解决方案,这里有一个运行代码片段的链接。稍后我会尝试使用plunker,但我有一个atm计划,需要推进..谢谢DTing,在我检查答案之前,我仍在测试您的解决方案,但我认为这已经让我非常接近了。我仍然有点奇怪-比如我可以选择“阿拉巴马”,它应该会给出一个结果,但它显示了来自路易斯安那州、爱达荷州和夏威夷的300个结果。。。大多数其他状态都在完美地过滤结果,只有少数状态不起作用,因此我仍在尝试找出我在控制器或数据中是否做得不对。我还使用parseInt()..@webmaster_-sean将我的ID转换为数字而不是字符串,除非你将代码发布到某个地方(或者更好的是发布一个新问题),否则我真的帮不了你。祝你好运经过更多的测试后,我将检查您的解决方案作为答案,因为它确实解决了第1部分和第2部分-第3部分是我仍在努力解决的一些问题。。也许在另一个问题上,当我能更清楚地知道问题是什么的时候。为了将来的参考,我将尝试发布只包含一部分的问题;-)
<select ng-show="::filter.stateID != null" ng-model="filter.countyID" ng-options="item.countyID as item.county for item in co_option | filter:{ co_state_id : filter.stateID }">