我是angularjs和javascript的新手,所以请保持友好,我有两个下拉项(Ionic Select),它们都保存来自服务的数据。问题是我需要过滤它们才能像这样一起工作:如果我在第一个下拉列表中选择一个公司,则只有该公司内部的代表才应显示在另一个下拉列表中。
我| filter: byID按照Angularjs文档中的说明尝试使用,但我不知道这样做是不正确的方法。
| filter: byID
HTML:
<label class="item item-input item-select""> <div class="input-label"> Company: </div> <select> <option ng-repeat="x in company">{{x.compname}}</option> <option selected>Select</option> </select> </label> <div class="list"> <label class="item item-input item-select"> <div class="input-label"> Rep: </div> <select> <option ng-repeat="x in represent">{{x.repname}}</option> <option selected>Select</option> </select> </label>
Javascript:
/*=========================Get All Companies=========================*/ $http.get("http://localhost:15021/Service1.svc/GetAllComp") .success(function(data) { var obj = data; var SComp = []; angular.forEach(obj, function(index, element) { angular.forEach(index, function(indexN, elementN) { SComp.push({compid: indexN.CompID, compname: indexN.CompName}); $scope.company = SComp; }); }); }) /*=========================Get All Companies=========================*/ /*=========================Get All Reps=========================*/ $http.get("http://localhost:15021/Service1.svc/GetAllReps") .success(function(data) { var obj = data; var SReps = []; angular.forEach(obj, function(index, element) { angular.forEach(index, function(indexN, elementN) { SReps.push({repid: indexN.RepID, repname: indexN.RepName, fkc :indexN.fk_CompID}); $scope.represent = SReps; }); }); }) /*=========================Get All Reps=========================*/
您可以像我的解决过程一样解决此问题:我的解决方案就像您的问题。首先显示 区域* 列表,然后根据 所选区域 显示 塔纳 列表。使用 过滤器 表达式 ***
在HTML中:
<div> <form class="form-horizontal"> <div class="form-group"> <div class="col-md-3"><label><i class="fa fa-question-circle fa-fw"></i> District List</label></div> <div class="col-md-4"> <select class="form-control" ng-model="selectedDist" ng-options="district.name for district in districts"> <option value="">Select</option> </select> </div> </div> <div class="form-group"> <div class="col-md-3"><label><i class="fa fa-question-circle fa-fw"></i> Thana List</label></div> <div class="col-md-4"> <select class="form-control" ng-model="selectedThana" ng-options="thana.name for thana in thanas | filter: filterExpression"> <option value="">Select</option> </select> </div> </div> </form> </div>
在控制器中:
$scope.selectedDist={}; $scope.districts = [ {id: 1, name: 'Dhaka'}, {id: 2, name: 'Goplaganj'}, {id: 3, name: 'Faridpur'} ]; $scope.thanas = [ {id: 1, name: 'Mirpur', dId: 1}, {id: 2, name: 'Uttra', dId: 1}, {id: 3, name: 'Shahabag', dId: 1}, {id: 4, name: 'Kotalipara', dId: 2}, {id: 5, name: 'Kashiani', dId: 2}, {id: 6, name: 'Moksedpur', dId: 2}, {id: 7, name: 'Vanga', dId: 3}, {id: 8, name: 'faridpur', dId: 3} ]; $scope.filterExpression = function(thana) { return (thana.dId === $scope.selectedDist.id ); };
注意: 此处 filterExpression 是一个自定义函数,当所选区域id等于thana中的dId时,返回值。