javascript - 在 ng-options 中隐藏一个选项

标签 javascript angularjs

我是 Angular 的新手,正在尝试 ng-options。在我的 Controller 中,我有:

$scope.permissionLevels = [
    { value: "ROLE_READ", text: "Read Only" },
    { value: "ROLE_WRITE", text: "Write" }
];

在我的模板中,我有:

<select ng-options="permissionLevel.text for permissionLevel in permissionLevels"
        ng-model="selectedValue"></select>

根据 View ,我想隐藏读或写。所以在我的 Controller 中,我有另一个标志表明它是什么 View 。在我使用 ng-options 之前,我有一个正常的选择下拉菜单并做了如下操作:

<select>
    <option>Read Only </option>
    <option ng-show="shouldShowWrite">Write </option>
</select>

有没有办法用 ng-options 做到这一点?谢谢。

最佳答案

您可以在 ngOptions 表达式中使用过滤器:

<select ng-model="selectedValue"
        ng-options="permissionLevel.text for permissionLevel in 
                    permissionLevels | filter:shouldShow">
</select>

并在 Controller 中为 $scope 定义 shouldShow() 函数:

$scope.shouldShow = function (permissionLevel) {
  // put your authorization logic here
  return $scope.permission.canWrite || permissionLevel.value !== 'ROLE_WRITE';
}

有关完整示例,请参阅:http://plnkr.co/edit/8FkVktDXKGg3MQQawZCH

关于javascript - 在 ng-options 中隐藏一个选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24761281/

相关文章:

javascript - AngularJS延迟 View 显示

javascript - js 捕获变量是否被 js 更改

javascript - 过滤器不适用于匿名函数

angularjs - 当多个路径匹配时,Express 如何知道使用哪个 Router 路径?

javascript - 从 Controller 切换类并以 Angular 更新 View

javascript - 将 Controller 作为服务注入(inject) typescript /Angular ?

javascript - 使用 Angular 简单上一个\下一个 slider

javascript - 将数学对象转换为实际对象

javascript - 防止 Bootstrap 下拉菜单折叠,直到单击按钮

javascript - 如何应用我更改的 Location.url()