【问题标题】:bootstrap-select selects a wrong option each time.bootstrap-select 每次都会选择错误的选项。
【发布时间】:2015-06-24 02:51:40
【问题描述】:

我在 Angular 中使用 bootstrap select Bootstrap-select v1.7.2。当我从下拉列表中选择某个选项时,它会选择其他选项。

Plunker 在这里设置:

http://plnkr.co/edit/HPPlxx?p=preview

(代码在dashboard.html和dashboard.js中)

这就是我创建它的方式。 bootstrap-dropdown 是启动下拉菜单的指令。

  <form role="form" name="frmVariableConfig" ng-submit="vm.saveChanges()">
        <select ng-model="vm.CurrCustomer.Logic" name="ddlLogic" check-validation class="validate[required]" bootstrap-dropdown >
           <option ng-repeat="logic in vm.Logics" value="{{logic.value}}">{{logic.displayName}}</option>
        </select>
        <button type="submit" class="btn btn-sm text-right">Save</button>
     </form>

【问题讨论】:

    标签: javascript angularjs twitter-bootstrap bootstrap-select


    【解决方案1】:

    这应该可以解决您的问题。您需要一个空白状态选项。它还有助于使用 ng-options 而不是在选项中使用 ng-repeat。希望这能解决您的问题!

    <div ng-controller="dashboard as vm">
       <div class="block-area">
          <div class="row col-md-12 ">
             <h3 class="block-title">  {{vm.title}}</h3>
             <form role="form" name="frmVariableConfig" ng-submit="vm.saveChanges()">
                <select required ng-model="vm.CurrCustomer.Logic" name="ddlLogic" check-validation class="validate[required]" ng-options="logic.displayName for logic in vm.Logics track by logic.displayName" bootstrap-dropdown >
                   <option value="">Pick One</option>
                </select>
                <button type="submit" class="btn btn-sm text-right">Save</button>
             </form>
          </div>
       </div>
    </div>
    

    【讨论】:

    • 它有效,但验证 class="validate[required]" 无效。意味着即使需要选择它也会调用提交函数。如果我取出 验证有效,但我会得到相同的错误选择行为。
    • 您可以将required 添加到&lt;select&gt; 并阻止提交。但是验证似乎没有正确触发。您到底想在验证中显示什么?您使用这些指令而不是仅使用带有ng-optionsng-form 的引导CSS 是否有特定原因?
    • 是的,我的表单使用 jquery 验证引擎,并且选择是引导选择。这两个指令实际上都启动了它们。 Check-validation 启动 jquery 验证引擎,另一个提示 bootstrap-select
    • 是的,我看到了这两个,我只是好奇是否真的有必要同时使用这两者/其中之一(验证引擎和选择是引导选择)。似乎它们的两个功能都可以使用 AngularJS 库进行复制。特别是:FormControllerModelController
    • 我想这是一个很好的建议。一定会考虑的
    【解决方案2】:

    您应该使用 ng-options 来填充选择输入的选项元素。

    像这样:

    <select ng-model="vm.CurrCustomer.Logic" data-ng-options="logic.displayName for logic in vm.Logics track by logic.value" name="ddlLogic" check-validation class="validate[required]" bootstrap-dropdown >
        <option value="">Select...</option>
    </select>
    

    编辑

    使用以下内容:

    <select ng-model="vm.CurrCustomer.Logic" data-ng-options="logic.displayName for logic in vm.Logics" check-validation class="validate[customFunc]" bootstrap-dropdown>
             <option style="display:none" value="">Select</option>
    </select>
    

    其中customFunc 是您创建的新自定义验证函数,用于检查所选值是否不是""

    【讨论】:

    • 它有效,但验证 class="validate[required]" 无效。意味着即使需要选择它也会调用提交函数。如果我取出 验证有效,但我会得到相同的错误选择行为。
    • 好的,我做了一些挖掘:问题如下stackoverflow.com/questions/12654631/…
    • 这个空选项随后被 bootstrap-dropdown 指令作为实际选项处理。具体来说,它在引导下拉 js 运行时存在于 DOM 中,并将其作为实际选项读取。
    • 我做到了 vm.CurrCustomer.Logic = vm.Logics[0].value;这是 plunker plnkr.co/edit/HPPlxx?p=preview 我猜它的验证引擎有问题。
    • 是的,请检查我在主帖中的编辑,了解我的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 1970-01-01
    相关资源
    最近更新 更多