【问题标题】:Two select picker that doesn't show the selected value in the other两个选择器在另一个中不显示所选值
【发布时间】:2015-04-01 09:38:11
【问题描述】:

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

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

我用纯 javascript 写了一些东西,但它就像你永远不想碰的魔法代码。

感谢您的帮助。

【问题讨论】:

标签: javascript angularjs select hide


【解决方案1】:

您只需为第二个<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

【讨论】:

  • 这几乎就是我的意思,在您的 plunker 示例中,是否可能在开始时两个 select 的负载都被填充,以便我可以选择是从 select1 还是 select2 开始?跨度>
  • @user2244925,我更新了我的答案以包括这个案例
  • @user2244925,我的回答解决了你的问题吗?
猜你喜欢
  • 2015-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-16
  • 2011-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多