【问题标题】:Angular bootstrap-select continue showing options after selectAngular bootstrap-select 选择后继续显示选项
【发布时间】:2014-09-20 04:46:03
【问题描述】:

我注意到angular bootstrap select(演示部分)中存在问题 当您选择一个选项时,此选项会继续显示选项而不是隐藏。 如果不使用 ng-model 属性,则此工作正常。

这是EXAMPLE

一段代码:

      <select toggle selectpicker ng-model="form">
          <option>Mustard</option>
          <option>Ketchup</option>
          <option>Relish</option>
      </select>

问候,

【问题讨论】:

  • 您可以为此添加fiddle。如果我看不到它的所有代码,就很难确切地说出问题出在哪里。
  • 我已经添加了一个 plunker(示例)
  • element.selectpicker('refresh') 正在清除现有的lis 并添加新的,因此您绑定的事件丢失了。这就是为什么它在不使用 ng-model 时起作用的原因,因为那时不调用 refresh

标签: javascript angularjs twitter-bootstrap-3 bootstrap-select angular-bootstrap


【解决方案1】:

似乎绑定在 li 列表项上的指令 angular-bootstrap-select.extra 中的事件在 ng-model 附加到此时不会被执行。原因是:- 在指令angular-bootstrap-select 中,当模型值更改时,它会调用element.selectpicker('refresh');,最终在刷新方法中删除并重新创建列表项,因此绑定在li 上的指令angular-bootstrap-select.extra 中的点击事件丢失。您可以通过在父级上使用事件委托来快速修复。

试试:

 element.next().on('click', 'li', function () {
       target.toggleClass('open')
});

而不是:-

 element.next().find('li').bind('click', function () {
    target.toggleClass('open')
 })

Plnkr

【讨论】:

  • 干得好!另一件事是当您单击选择并选择另一个选择而不在第一个选择中选择选项时,两者都会显示选项,我该如何解决?
  • @Mils 对不起,我没有收到你的问题?
  • 其实你回答了我的问题,只是我注意到另一个问题谢谢。
  • @Mils 是的,我明白了.. :) 但我不明白这个问题.. :)
  • @Mils 啊明白了...是的,我想这是因为该组件不处理点击外部来隐藏它...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-22
  • 2016-02-06
  • 1970-01-01
  • 2017-11-16
  • 2021-06-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多