当前位置: 首页 > 知识库问答 >
问题:

剑道DropDownList不显示选定的项目

程钧
2023-03-14

我试图使用一对剑道下拉列表来过滤AngularJS中的数据集。其中一个数据源使用静态可观察数组按状态筛选数据集;另一个数据源是数据集的“区域ID”列的一组不同值,也存储为可观察数组。当状态下拉列表更改时,区域下拉列表应该从新过滤的数据中重新加载区域列表。这是可行的,但是选定的值最终会被忽略,即使应该代表选定值的模型仍然具有正确的值,并且数据仍然被相同的值正确过滤。打开下拉列表,然后单击它,使其按应有的方式显示该值。

以下是超文本标记语言的样子:

<select name="filterByRegion" style="width: 180px;" class="form-control" ng-model="selectedRegion" ng-change="onRegionFilterChange(selectedRegion)" kendo-drop-down-list k-html" target="_blank">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;
        };

最后,这里是updateArea onFilterList方法:

        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,等等,我已经在调试器中检查了所有内容,并且所有的值都是正确的(也没有明显的竞争条件)。

有什么想法吗?

共有1个答案

莫选
2023-03-14

我想出来了。我在下拉列表中混合了剑道和角度配置,并且依靠角度过程来更新数据,这并没有正确地更新剑道MVVM。换成纯剑道就成功了。

 类似资料:
  • 我有一个可编辑的剑道网格,有一个字段是一个下拉列表。我有一个和字段需要在该列中使用。名称显然会显示,而ID应该是用于绑定的。我已经在下面的示例中删除了我的数据源URL,但是DropDownList数据显示良好,包含名称和ID值列表。 我已经看了一段时间了,所以我可能错过了一些明显的东西。我对这个问题有一个相同的问题(下拉列表不绑定到该行中显示的用户,直到我单击下拉列表来展开它),但是我认为我的模型

  • 我是剑道MVC的新手,所以请耐心等待。我有以下代码来创建一个剑道MVC DropDownList For: "原始"ViewModel的Kind"属性对应于从DataSource-Read终结点接收的数据的"Code"属性。 请指教。 谢谢你,屋大维

  • 我在五月有一个剑道MVC下拉列表。我正在成功地将所选值从中保存到数据库中。当我来编辑数据时,该值从模型中正确返回并在下拉树中设置,但是,在下拉树中没有任何项目被视觉上选中。 当我尝试从单击按钮读取下拉树的值时,它正确地返回该值。 上面的javascript警报正确返回该值,但在DropdownTree中没有显示选定的项目。我还尝试删除ValuePrimitive属性,但没有任何效果。 有人能帮我找

  • 嗨,在剑道网格中编辑时,有没有办法只显示几列? 我正在尝试以弹出模式更新网格值。当我点击编辑按钮时,它会在弹出窗口中显示所有列。但我只想在弹出窗口中显示选定的列,如name和dept。

  • 我不认为实现这样一个常见的简单场景有那么难,但我有一个剑道下拉列表,它使用MVVM风格进行初始化,它绑定了一个远程数据源。 我想要实现的是,一旦远程数据源准备好并绑定到小部件,默认情况下会选择第一个选项(当然,第一个项目的值应该绑定到视图模型) 我试图直接使用上面的代码来做这件事,它将一个dataBound事件绑定到小部件,并在它触发时选择第一个项目。回调方法被调用时没有错误,但是小部件从不选择第

  • 有没有人能帮我一下这个如何用下面的数据来实现。