2017-06-30 9 views
0

AngledJSのデータセットをフィルタリングするために、一対の剣道ドロップダウンリストを使用しようとしています。静的なObservableArrayデータソースを使用して、ステータスでデータセットをフィルタリングします。もう1つのデータソースは、ObservableArrayとしても格納されている、データセットの「regionID」列とは異なる値のセットです。ステータスのドロップダウンが変更されると、リージョンのドロップダウンリストでは、新しくフィルタリングされたデータからリージョンのリストがリロードされます。これは機能しますが、選択した値を表すはずのモデルが正しい値を持ち、データがその同じ値で正しくフィルタリングされていても、選択した値が空白になります。ドロップダウンを開いてからクリックすると、その値が表示されるようになります。ここで剣道DropDownListが選択項目を表示していません

は、HTMLは次のようになります。ここでは

<select name="filterByRegion" style="width: 180px;" class="form-control" ng-model="selectedRegion" ng-change="onRegionFilterChange(selectedRegion)" kendo-drop-down-list k-options="regionFilterOptions"></select> 
<select name="accountStatus" style="width: 180px;" class="form-control" ng-model="status" ng-change="onAccountStatusChange(status)" kendo-drop-down-list k-options="accountStatusOptions"></select> 

は、コントローラから2 "のonChange" メソッドです:

 $scope.onAccountStatusChange = function(status) { 
      $scope.status = status; 
      updateRegionFilterList(); 
     }; 
     $scope.onRegionFilterChange = function(selectedRegion) { 
      $scope.selectedRegion = selectedRegion; 
     }; 

そして最後に、ここでupdateRegionFilterListの方法があります

 var updateRegionFilterList = function() { 

      $scope.regions.empty(); 

      angular.forEach($scope.accounts, function(account) { 
       if (account.reviewStatus === $scope.status) { 
        if ($scope.regions.indexOf(account.regionID) <= -1) { 
         $scope.regions.push(account.regionID); 
        } 
       } 
      }); 

      $scope.regions.sort(); 
      $scope.regions.unshift("Filter By Region:"); 

      if ($scope.regions.indexOf(tempRegion) <= -1) { 
       $scope.selectedRegion = "Filter By Region"; 
      } 
     }; 

私はこれを回避するためにさまざまな方法を試しました。これには、 ObservableArrayなどを空にする代わりに不要な領域をスプライスして、デバッガのすべてをチェックして、すべての値が正しいかどうか(明らかな競合条件もありません)。

アイデア?

答えて

0

私はそれを理解しました。私はドロップダウンと剣道と角度の組み合わせが混在していて、剣道のMVVMを適切に更新していないデータを更新するための角度のあるプロセスに頼っていました。それを純粋な剣道に変えることはやりました。

関連する問題