【问题标题】:Angularjs: ng-options with filter, model of select element retains value of filtered optionAngularjs:带有过滤器的ng-options,选择元素的模型保留过滤选项的值
【发布时间】:2013-09-23 16:27:22
【问题描述】:

我在使用带有过滤器的 ng-options 时遇到问题。

问题是当一个选项被过滤器移除时,选择元素的模型会保留被移除选项的值。

这是plunker。我有两个过滤器正在处理 ng-options 集。一种是从选项列表中删除重复项,另一种是删除空值。按照这些步骤,您可以看到我所说的问题。

  1. 在“首选电子邮件”下拉列表中,选择最后一个电子邮件选项“jimbob@yahoob.com”。
  2. 删除“其他邮箱”输入框中的文字。

您现在可以看到,由于“其他电子邮件”为空,它不再是可用选项,并且下拉菜单默认为“请选择首选电子邮件”。然而,选择元素的模型仍然有分配给它的对象。

相同的问题不同的上下文。

  1. 在“首选电子邮件”下拉列表中,选择“jimbob@yahooz.com”选项。
  2. 现在删除“jimbob@yahooz.com”中的“z”

这样做后,两个输入框中的值(“电子邮件”和“家庭电子邮件”)会重复,而第二个(“家庭电子邮件”)会从可用选项中过滤掉。但是,刚刚过滤的对象仍然分配给模型。

编辑:我的解决方案(谁能做得更好?)

这里 (plunker) 是我能想到的最好的。我是 Angular 的新手,不禁认为有更好的方法可以做到这一点,我认为这个解决方案“不好”但它有效。

基本上,我向过滤器传递了对范围 (this.contact) 的引用以及我正在使用的默认项目的名称('default_email' 或 'default_phone')。如果过滤器从选项集中删除一个项目,它会检查它是否是默认值,如果是,则将默认值设置为未定义。

我还添加了更多代码,以获得更多关于我正在努力的内容。

【问题讨论】:

    标签: angularjs angularjs-filter ng-options


    【解决方案1】:

    我知道这已经过时了,但我花了 很长 时间试图找出处理这个问题的最佳方法。

    原来它已在 Angular 1.4 中修复!尝试用 1.4 替换原始 plunker 中的 Angular 版本,问题就消失了。我通过尝试各种版本发现了这一点,直到我缩小了范围。

    【讨论】:

      猜你喜欢
      • 2019-01-08
      • 1970-01-01
      • 1970-01-01
      • 2015-07-17
      • 2013-05-25
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多