当前位置: 首页 > 面试题库 >

为什么angular的ng-disabled无法与bootstrap的btn类一起使用?

许涵容
2023-03-14
问题内容

我有一个锚标记,ng-disabled指令根本不起作用。
它可以在按钮上工作,但是一旦我将Bootstrap的btn类添加到锚标记中,Angular的ng-disabled就可以正常工作了!

这如何运作?


问题答案:

ngDisabled仅适用于响应该disabled属性的元素(输入,文本区域,单选按钮,按钮标签等)。在Bootstrap中,您必须将“
disabled”类添加到btn元素中。看起来像这样:

<div class="btn btn-default disabled">I'm a button!</div>

为此,请在指令/控制器中定义一个变量,如下所示:

$scope.disableButtons = true;

然后使用angular ngClass来基于变量动态添加类,如下所示:

<div class="btn btn-default" ng-class="{'disabled': disableButtons}" ng-click="doSomething()">I'm a button!</div>

每次disableButtons在范围内更改变量时,该按钮将在视图中根据值显示为禁用或启用。

注意: 将禁用的类添加到btn元素不会阻止JS单击事件的发生。为此,您必须在doSomething()函数中编写一个钩子,如下所示:

$scope.doSomething = function() {
  if($scope.disableButtons) {
    return;
  }
  // Else, really do something
}

编辑:
看来我并没有真正回答这个问题。真正的答案(我相信)是disabled仅适用于.btn元素以及链接<a><a/>和列表<li><li/>元素(…,可能还有更多),因为这是Bootstrap定义的。这是来自Bootstrap的btn元素来源:

.btn.disabled, .btn[disabled], fieldset[disabled] .btn {
  cursor: not-allowed;
  pointer-events: none;
  opacity: .65;
  filter: alpha(opacity=65);
  -webkit-box-shadow: none;
  box-shadow: none;
}

为了使此功能适用于锚标记,您将必须编写自己的CSS来复制此标记,如果使用SASS来完成类似@extend样式的操作,则更好。



 类似资料:
  • 本文向大家介绍Bootstrap navbar-btn类的用法,包括了Bootstrap navbar-btn类的用法的使用技巧和注意事项,需要的朋友参考一下 将.navbar-btn类的按钮添加到不位于<form>中的<button>元素中,以将其垂直放置在导航栏中。.navbar-btn可以用于<a>和<input>元素。 您可以尝试运行以下代码来实现navbar-btn类 示例

  • 问题内容: 我正在阅读angularjs.org上的开发人员指南的指令部分,以刷新我的知识并获得一些见解,并且我尝试运行示例之一,但指令ng- hide不适用于自定义指令。 这里是jsfiddle:http : //jsfiddle.net/D3Nsk/: 知道为什么会这样吗? 解 似乎标记上的变量dialogIsHidden已经在指令中引用了作用域变量,而不是控制器中的变量;鉴于该指令具有其自己

  • 问题内容: 由于某种原因,初始化值不会出现在字段中,但是没有ng-pattern的第二个字段确实起作用。有任何想法吗? 这是小提琴 http://jsfiddle.net/wkzab/1/ 问题答案: 更新 我仔细研究了一下(从未真正使用过Angular),并且通过使用表单和输入上的属性,您可以捕获一个错误,如我最新的JSFiddle所示。其格式为:。这将返回参数等于布尔值的对象。所以会在有正则表

  • 问题内容: 有人可以向我解释为什么在这个简单示例中我无法获得当前选择的单选按钮。我正在尝试使用ng-repeat指令动态生成单选按钮,并使用ng- model获取当前选择的单选按钮。像这样: 模板: 控制器: 问题答案: 因为当它在放置指令的位置重复模板时,确实会在每次迭代中创建一个新的子范围(通常是继承的)。 那么当创建一个新的原型继承的子范围时会发生什么呢? 在子作用域中,它包含所有属性,其中

  • 问题内容: 我试图按相反的顺序(不区分大小写)对字符串数组进行排序,而不修改它,而只打印它。所以我正在使用Java8流。但是我做不到。 这是我的尝试: 这里的问题是静态方法不接受。 同时,我设法对数组进行排序,但对其进行了 修改 : 那么,最简​​单的解决方法是什么? 问题答案: 问题是Java无法为某些复杂的表达式推导泛型。第一条语句有效,而第二条语句导致编译时错误: 有几种解决问题的方法。这是

  • 三种方式都试了,都没有效果,该怎么给disabled赋值呢?