javascript - 两个选择器在另一个中不显示所选值

标签 javascript angularjs select hide

AngularJS 中是否有一种很好的方法可以在第二个选择器中隐藏第一个选择器中选定的值?

如果我在第一个值中选择另一个值,它需要在第二个值中再次可见。

我用纯 JavaScript 编写了一些可以运行的东西,但它就像你永远不想碰的神奇代码。

感谢您的帮助。

最佳答案

您只需在第二个<select>中添加一个过滤器即可。否定过滤器的语法如下:

items | filter: "!somevalue"

items | filter: "!" + var

对于var包含过滤掉的字符串的变量。

所以,完整的解决方案如下所示:

<select ng-model="select1"
        ng-options = "item for item in items" ng-change="select2 = undefined">
    <option value="">select 1</option>      
</select>

<select ng-model="select2"
        ng-options = "item for item in items | filter: '!' + select1">
    <option value="">select 2</option>
</select>

plunker

编辑:

如果选择的顺序不重要,那么您可以按如下方式进行过滤:

<select ng-model="select1" ng-options="item for item in items | filter: filter1" 
        ng-change="filter2 = select1 ? '!' + select1 : undefined">
  <option value="">select 1</option>
</select>

<select ng-model="select2" ng-options="item for item in items | filter: filter2"
        ng-change="filter1 = select2 ? '!' + select2 : undefined">
  <option value="">select 2</option>
</select>

(当过滤器表达式为 undefined 时,过滤器不适用)

plunker 2

关于javascript - 两个选择器在另一个中不显示所选值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28277781/

相关文章:

javascript - PhoneGap确认回调函数

javascript - 如何使用 Javascript 将当前时间与格式化为字符串的时间范围进行比较

ios - 错误错误 : Attempted to assign to readonly property. ChildScope

javascript - 在 Angular-UI 日历/全日历中禁用事件大小调整

c# Linq select join on select group by 收藏

javascript - react JS : How to set grandchildren states

javascript - WebGL/三个弧度从 0 到 1.57 回到 0 到 -1.57 等等。我如何知道我在循环中的位置

javascript - Angular.js通过复制粘贴上传图片

entity-framework - Entity Framework 中的 GROUP 和 SUM

php - 是否可以将变量值添加到选择查询结果 php pdo