【问题标题】:Disable re-select when model was selected in Angularjs-chosen在 Angularjs-chosen 中选择模型时禁用重新选择
【发布时间】:2019-04-14 19:07:29
【问题描述】:

我需要以下情况的帮助:

我在表格中使用单选下拉菜单。每行都有自己的下拉菜单。 现在有 2 个选项可以更改选择:

  1. 单击取消选择 ('x') 图标(工作正常 - 通过 ng-change)。

  2. 打开下拉列表,从列表中选择另一个值。覆盖之前的值(虽然 ng-change 会触发,但我无法知道它是新值还是覆盖值)。

我希望禁用第二种行为。是否可以“告诉”选择了一旦选择了一个值,重新选择新值的唯一方法是单击“x”? 例如:选择一个值后,禁用下拉菜单,隐藏“箭头”图标,但保持“x”取消选择图标处于活动状态?

<select chosen
                            allow-single-deselect="true"
                            placeholder-text-single="'Select'
                            ng-model="row.userSelection"
                            ng-options="field as field.name for field in vm.fields">
                        <option value=""></option>
                    </select>

谢谢。

【问题讨论】:

    标签: javascript angularjs jquery-chosen angular-chosen


    【解决方案1】:

    添加 ng-disabled="$ctrl.model" 将禁用选择,直到 "x" 清除 $ctrl.model。清除后,选择将重新启用,并且可以进行新的选择。

    快速浏览后我唯一能想到的就是从 ng-options 转换为 ng-disabled 并在实际的 option 元素上使用 ng-disabled。文档说您可以隐藏禁用的选项,例如,如果您选择 OPTION1 并且 OPTION[2-4] 被禁用,它们将从列表中删除。

    我找到了一个 1.0 版的 plunker,但它不起作用。使选项失效仍然会在列表中显示它们,尽管当您选择它们​​时会使它们未定义。也许更新了更新的版本以实际删除它们。

    【讨论】:

    • 你能发布 HTML 吗?会更容易看到发生了什么。
    • 看看我的最后一个 plunker。它的工作方式是我认为你想要的。看起来您正在使用其他一些指令,而不仅仅是标准选择。该指令是否添加了 x?如果是这样,我明白为什么它也是灰色的。对于没有正确阅读原始问题,我深表歉意。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多