javascript - Bootstrap 和 Angular js 之间的单选按钮冲突

标签 javascript angularjs twitter-bootstrap

<!-- Container -->
<div class="container">

  <div class="row">
    <div class="col-lg-12">
      <div class="page-header text-center">
        <h2>Radio Button Conclict between Bootstrap And Angular</h2>
      </div>
    </div>
  </div>

  <div class="row">
    <!-- With data-toggle -->
    <div class="col-lg-6">

      <div class="row">
        <h4 class="col-lg-12">
          This has data-toggle property
        </h4>
      </div>

      <div class="btn-group row" data-toggle="buttons">
        <label class="btn btn-primary">
          <input type="radio" data-ng-model="selection" name="options" value="option1" />
          <span>Option 1</span>
        </label>
        <label class="btn btn-primary">
          <input type="radio" data-ng-model="selection" name="options" value="option2" />
          <span>Option 2</span>
        </label>
        <label class="btn btn-primary">
          <input type="radio" data-ng-model="selection" name="options" value="option3" />
          <span>Option 3</span>
        </label>
      </div>

      <div class="row">
        <div class="col-lg-6">
          <p>Model: {{selection | json}}</p>
        </div>
      </div>

    </div>
    <!--/ With data-toggle -->

    <!-- Without data-toggle -->
    <div class="col-lg-6">

      <div class="row">
        <h4 class="col-lg-12">
          This has NOT data-toggle property
        </h4>
      </div>

      <div class="btn-group row">
        <label class="btn btn-primary">
          <input type="radio" data-ng-model="selection2" name="options" value="option1" />
          <span>Option 1</span>
        </label>
        <label class="btn btn-primary">
          <input type="radio" data-ng-model="selection2" name="options" value="option2" />
          <span>Option 2</span>
        </label>
        <label class="btn btn-primary">
          <input type="radio" data-ng-model="selection2" name="options" value="option3" />
          <span>Option 3</span>
        </label>
      </div>

      <div class="row">
        <div class="col-lg-6">
          <p>Model: {{selection2 | json}}</p>
        </div>
      </div>

    </div>
    <!--/ Without data-toggle -->

  </div>

</div>
<!--/ Container -->

“data-toggle="buttons""标签不允许 Angular js 正常工作,正如你在这个 plnkr 示例中看到的那样..但是如果我删除它,那么它工作正常..

但我想保持原样..

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

最佳答案

通过使用 btn-group 上的 data-toggle="button" 属性隐藏单选按钮, Bootstrap 不允许点击事件向下传播到 radio 输入。您可以通过向 .btn 元素添加 ng-click 绑定(bind)来抵消这种影响。

<div class="btn-group row" data-toggle="buttons">
    <label class="btn btn-primary" ng-click="selection = 'option1'">
      <input type="radio" data-ng-model="selection" name="options" value="option1" />
      <span>Option 1</span>
    </label>
    <label class="btn btn-primary" ng-click="selection = 'option2'">
      <input type="radio" data-ng-model="selection" name="options" value="option2" />
      <span>Option 2</span>
    </label>
    <label class="btn btn-primary" ng-click="selection = 'option3'">
      <input type="radio" data-ng-model="selection" name="options" value="option3" />
      <span>Option 3</span>
    </label>
</div>
PS。您会注意到,单击顶部的 radio 组会影响底部的组,是因为它们具有相同的 name 属性。根据需要更改此设置,您会发现每个组都能正确/独立于其他组工作

关于javascript - Bootstrap 和 Angular js 之间的单选按钮冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42218585/

相关文章:

javascript - 条件 : Replacing a value with a glyphicon

twitter-bootstrap - Bootstrap : How to obtain plain border in input field?

html - 可以选择的 Bootstrap 可滚动列

javascript - 只需要重置 Javascript 数组的索引

Javascript:从变量本身引用变量名

javascript - 在用户交互之前调用 Ionic recognizePopup then() 函数

asp.net - .NET 4.5 和 Angular 的单页应用程序项目模板

javascript - 使用 javascript 显示隐藏的 HTML 元素

javascript - 使用 knockoutjs 加载绑定(bind)?

javascript - 将点击事件添加到元素,但不添加 Angular 子元素