根据 ng-grid selectedItem[0] 更改下拉选项

make dropdown options change based on ng-grid selectedItem[0]

本文关键字:选项 ng-grid selectedItem 根据      更新时间:2023-09-26

首先,让我说谢谢你花时间阅读这篇文章,我很抱歉没有粘贴我的代码,我所做的工作是在没有互联网连接的服务器上进行的。 我想我可以解释我在问什么,也许可以很好地输入一些伪代码来表达我的观点。

我有一个带有角度控制器的 html 页面。 HTML 页显示一个项目列表,这些项目表示使用 ng-grid 的数据库中的行。 当选择列表中的项目并且下拉列表是自动提交时,将显示下拉列表

ng-change="processOptions(dropdown_options)"

选定项是控制器中范围的一部分:

$scope.selectedItem=[];

下拉列表根据网格中的选定项显示..很好地选择。

ng-show="selectedItem[0]"

下拉选项在控制器中定义为:

$scope.dropdownOptions = [
    {label: "Option Blue", value: "BLUE"},        
    {label: "Option Green", value: "GREEN"},
    {label: "Option Yellow", value: "YELLOW"},
];

以上效果很好。 现在我想做的是使选项以 selectedItem[0].color 中看到的值为条件

当选择项目[0].color=="BLUE"时,我只希望显示绿色和黄色选项..依此类推,如果color="GREEN",则选项中只出现蓝色和黄色。

我该如何实现此目的? 当定义调用函数的 selectedItem[0] 时,是否有另一个可以触发的 ng 控制器?

ng-filter具有您需要的功能。

你要找的是ng-filter。

实际上,我无法让 ng-filter 或一般过滤器工作,因为.. 好吧,我找到的所有示例都根据某些文本过滤了列表.. 包括部分匹配或完全匹配文本的项目。 在这种情况下,我需要它来排除完全匹配。 ng-filter 建议将我引向正确的方向,最终不久后我想出了以下解决方案,该解决方案有效且不会干扰标签中的任何其他操作。 这对我来说似乎有点笨拙,所以如果有更好的解决方案确实涉及ng-filter,请填写我。

ng-options="opt.label for opt in filterOptions()"

然后在控制器中:

$scope.filterOptions = function() {
    if ($scope.selectedItem[0]) {
        if ($scope.selectedItem[0].color === "GREEN") {
            $scope.dropdownOptions = [                    
                {label: "Option Blue", value: "BLUE"},    
                {label: "Option Yellow", value: "YELLOW"}
            ]
        }
        else if .....and so on {
        }
    }
    return $scope.dropdownOptions;
}