Kendo DropDownList 不显示所选项目

Kendo DropDownList not displaying selected item

我正在尝试使用一对 Kendo 下拉列表来过滤 AngularJS 中的数据集。一种使用静态 ObservableArray 数据源按状态过滤数据集;另一个数据源是一组来自数据集 "regionID" 列的不同值,也存储为 ObservableArray。当状态下拉列表发生变化时,区域下拉列表应该从新过滤的数据中重新加载区域列表。这行得通,但所选值最终被清空,即使应该表示所选值的模型仍然具有正确的值,并且数据仍被相同的值正确过滤。打开下拉菜单然后单击它会使它按应有的方式显示该值。

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

这是来自控制器的两个 "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";
            }
        };

我尝试了很多方法来解决这个问题,包括尝试保留和重新加载 selectedRegion 值,拼接掉不需要的区域而不是清空 ObservableArray 等,我已经检查了调试器中的所有内容以及所有值是正确的(也没有明显的竞争条件)。

有什么想法吗?

我想通了。我将 kendo 和 angular 配置与下拉菜单混合使用,并依靠 angular 进程来更新数据,这并没有正确更新 Kendo MVVM 内容。将其切换为纯 Kendo 就成功了。