首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ng-options中隐藏选项

在ng-options中隐藏选项
EN

Stack Overflow用户
提问于 2014-07-15 22:47:05
回答 3查看 22.9K关注 0票数 13

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

代码语言:javascript
复制
$scope.permissionLevels = [
    { value: "ROLE_READ", text: "Read Only" },
    { value: "ROLE_WRITE", text: "Write" }
];

在我的模板中,我有:

代码语言:javascript
复制
<select ng-options="permissionLevel.text for permissionLevel in permissionLevels"
        ng-model="selectedValue"></select>

根据视图的不同,我想隐藏读或写。因此,在我的控制器中,我有另一个标志来指示它是什么视图。在我使用ng-options之前,我有一个普通的select下拉列表,并执行了如下操作:

代码语言:javascript
复制
<select>
    <option>Read Only </option>
    <option ng-show="shouldShowWrite">Write </option>
</select>

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-15 23:57:35

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

代码语言:javascript
复制
<select ng-model="selectedValue"
        ng-options="permissionLevel.text for permissionLevel in 
                    permissionLevels | filter:shouldShow">
</select>

并将shouldShow()函数定义为控制器中的$scope:

代码语言:javascript
复制
$scope.shouldShow = function (permissionLevel) {
  // put your authorization logic here
  return $scope.permission.canWrite || permissionLevel.value !== 'ROLE_WRITE';
}

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

票数 31
EN

Stack Overflow用户

发布于 2014-07-15 22:52:16

考虑将ngRepeat用于该级别的控制。我认为使用ngOptions是不可能的。

代码语言:javascript
复制
 <select ng-model="selectedValue">
    <option ng-repeat="permissionLevel in permissionLevels" value="{{permissionLevel.text}}" ng-show="shouldShowWrite(permissionLevel)">
      {{permissionLevel.text}}
    </option>
  </select>
票数 2
EN

Stack Overflow用户

发布于 2014-07-15 23:25:07

请检查以下代码,它可能会帮助您解决此问题!!

代码语言:javascript
复制
<select>
<option>Read Only </option>
<option ng-show="selectedValue.value=='ROLE_WRITE'">Write </option>
</select>
票数 -4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24761281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档