2017-06-30 5 views
0

Ich versuche, ein Paar Kendo Dropdown-Listen zu verwenden, um ein Dataset in AngularJS zu filtern. Man verwendet eine statische ObservableArray-Datenquelle, um die Datenmenge nach Status zu filtern. Die andere Datenquelle besteht aus verschiedenen Werten aus der Spalte "regionID" des Datasets, die ebenfalls als ObservableArray gespeichert sind. Wenn sich das Dropdown-Menü für den Status ändert, lädt die Dropdown-Liste für Regionen die Liste der Regionen aus den neu gefilterten Daten neu. Dies funktioniert, aber der ausgewählte Wert wird ausgeblendet, auch wenn das Modell, das den ausgewählten Wert darstellen soll, immer noch den richtigen Wert hat und die Daten immer noch korrekt mit dem gleichen Wert gefiltert werden. Wenn Sie das Dropdown-Menü öffnen und dann auf "Aus" klicken, wird der Wert angezeigt.Kendo DropDownList zeigt das ausgewählte Objekt nicht an

Hier ist, was die HTML wie folgt aussieht:

<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> 

Hier sind die beiden "onChange" Methoden von der Steuerung sind:

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

Und schließlich ist hier die updateRegionFilterList Methode:

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

Ich habe versucht viele Möglichkeiten um dies zu umgehen, einschließlich der Versuch, die s zu bewahren und neu zu laden wähleRegion-Wert, spleiße nicht benötigte Bereiche aus, anstatt das ObservableArray zu leeren, usw., und ich habe alles im Debugger überprüft und alle Werte sind korrekt (auch keine offensichtlichen Race-Bedingungen).

Irgendwelche Ideen?

Antwort

0

Ich fand es heraus. Ich hatte Kendo und eckige Konfigurationen mit den Dropdowns gemischt und war auf einen eckigen Prozess angewiesen, um die Daten zu aktualisieren, die den Kendo MVVM-Kram nicht richtig aktualisierten. Das Umschalten auf reinen Kendo hat es geschafft.

Verwandte Themen