使下拉选项基于ng-grid selectedItem [0]更改

时间:2014-11-21 16:43:46

标签: javascript jquery html angularjs twitter-bootstrap

首先,请允许我说感谢您花时间阅读本文,我很抱歉没有粘贴我的代码,我所做的工作是在没有互联网连接的服务器上。我想我可以解释一下我在问什么,也许可以输入一些伪代码,以便明确我的观点。

我有一个带角度控制器的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

中的值为条件

当selectedItem [0] .color ==" BLUE"我只想要绿色和黄色选项来显示...等等,如果颜色="绿色"然后只有BLUE和YELLOW出现在选项中。

我如何做到这一点?当定义了调用函数的selectedItem [0]时,是否有另一个ng控制器可以被触发?

3 个答案:

答案 0 :(得分:1)

您正在寻找的是ng-filter

答案 1 :(得分:1)

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

答案 2 :(得分:1)

实际上,我无法通常使用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;
}