2015-08-06 30 views
5

Angularjs ve javascript'te yeni biriyim, lütfen nazik olun, ikisinin de bir servisten veri alabilen iki açılır öğesi (İyonik Seçim) var. Sorun şu şekilde birlikte çalışabilmem için filtrelemem gerektiğidir: ilk açılır listede bir şirket seçersem, o şirketin içindeki temsilciler diğer açılır listede görünmelidir.Angularjs Açılır menü ile filtre verisi

Angularjs belgelerinde izlediğim gibi | filter: byID kullanmayı denedim, ancak bunu yapmanın doğru yolu olduğunu düşünmüyorum.

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=========================*/ 

cevap

9

Sen benim çözüm süreci gibi bu sorunu çözebilir: senin sorunu gibi benim çözüm. ilk sırada Bölge listesini seçin ve 'a göre Thana listesini seçin Bölge. denetleyici olarak

<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); 
      }; 

N.B: ifade

HTML'de filtre kullanarak İşteFilterExpression bir gelenektir seçili bölge kimliği, dd'ye eklendiğinde değer döndüren işlev.

+0

Çözümünüz tamamen çalışıyor mu? Sormamın nedeni, filtre self'lerinizdeki filterExpression, denetleyicinizden kimliği çağırmaz. @shaishabroy –

+0

Çözüm, her bir nesne için filterExpression çağrısı ve yanlış değerden döndürdüğü için çalışmalıdır. [PLUNKER] 'ı (http://plnkr.co/edit/5CoVo75Es6qP5rBcP4FX?p=preview) –

+0

adresinden kontrol edebilirsiniz. Çözümü sorununuzu çözdüyse, lütfen bu çözümü kabul edin @RenaldoGeldenhuis –