【问题标题】:How to render only visible items in AngularJs Dropdown如何在AngularJs Dropdown中仅呈现可见项目
【发布时间】:2014-11-11 21:17:27
【问题描述】:

我有以下 AngularJs 对象:

$scope.control = {'options': [{ "id": 1, "text": "Option 1", "isHidden": 0 }, { "id": 2, "text": "Option 2", "isHidden": 1 }, { "id": 3, "text": "Option 3", "isHidden": 0 }]};

现在,我可以使用以下内容呈现包含所有项目的下拉列表:

<select ng-model="control.uiSelValue" ng-options="option.text for option in control.options" class="form-control"></select>

我怎样才能只渲染那些标记为“isHidden = 0”的元素?即我只想在下拉菜单中渲染“选项 1”和“选项 3”。

【问题讨论】:

标签: javascript angularjs


【解决方案1】:

control.options 应用自定义过滤器。您确实不需要创建此过滤器,因为您可以使用表达式,但我认为在视图中创建过多逻辑是一种不好的做法。

例如:

Demo

查看

<select ng-model="control.uiSelValue"
        ng-options="option.text for option in control.options | filter:myFilter"
        class="form-control">
</select>

控制器

$scope.control = {
    options: [{
        "id": 1,
        "text": "Option 1",
        "isHidden": 0
    }, {
        "id": 2,
        "text": "Option 2",
        "isHidden": 1
    }, {
        "id": 3,
        "text": "Option 3",
        "isHidden": 0
    }]
};

$scope.myFilter = function (value) {
    return value.isHidden === 0;
};

【讨论】:

  • +1 表示不将过滤器逻辑放入表达式中。虽然我会想出比myFilter 更有意义的名字。
  • 我将其命名为 myFilter 只是因为它是一个示例 :)
  • 好吧,我一发布就想通了。请参阅我的第一条评论。
猜你喜欢
  • 2021-12-07
  • 1970-01-01
  • 2016-12-05
  • 2016-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-13
  • 2021-02-27
相关资源
最近更新 更多