代码之家  ›  专栏  ›  技术社区  ›  Woodchuck

AngularJS禁用ngclick

  •  1
  • Woodchuck  · 技术社区  · 6 年前

    在安格拉尔,有什么方法可以 ng-click 依赖于布尔值?

    例如,我希望下面的文本(“click”)可以单击,但是 只有 当某些范围属性(例如, $rootScope.enableClick true .

    <div ng-click="count = count + 1" ng-init="count=0">Click</div>
    

    最好,是否有一种简单的方法可以在不创建自定义指令的情况下完成此操作?

    3 回复  |  直到 6 年前
        1
  •  1
  •   georgeawg    6 年前

    使用奇怪和奇妙的 && logical operator ng-click 表达式:

    <div ng-click="!stop && (count = count + 1)">Click me</div>
    

    演示

    .clickable {
       cursor: pointer; 
    }
    <script src="//unpkg.com/angular/angular.js"></script>
    <body ng-app ng-init="count=0">
       <div ng-click="!stop && (count = count + 1)" class="clickable" >Click Me</div>
       <div>Count={{count}}</div>
       <input type="checkbox" ng-model="stop">Stop counting<br>
    </body>

    更新

    或使用 按钮 ng-disabled 指令:

    <button ng-click="count = count + 1" ng-disabled="stop" >Click Me</button>
    

    这个 NG已禁用 指令不适用于 <div> 元素。这个 disabled 属性不是 global attribute . 这个 ng-disabled 指令仅适用于 <input> , <button> , <textarea> <select> 元素作为这些元素支持 disabled property .

    演示

    <script src="//unpkg.com/angular/angular.js"></script>
    <body ng-app ng-init="count=0">
       <button ng-click="count = count + 1" ng-disabled="stop" >Click Me</button>
       <div>Count={{count}}</div>
       <input type="checkbox" ng-model="stop">Stop counting<br>
    </body>
        2
  •  2
  •   georgeawg    6 年前

    看看这个,我用的方法和@Georgeawg相同。不同的是,我把它作为一个按钮格式,并使用 pointer-events: none 以便不会从 .clickable

    .clickable {
      cursor: pointer;
      display: inline-block;
      width: 200px;
      text-align: center;
      padding: 10px;
      background-color: #eee;
      transition: all 0.3s ease;
      margin: 10px 0;
    }
    .clickable:hover {
      background-color: #ddd;
    }
    .test {
      color: grey;
      pointer-events: none;
    }
    <script src="//unpkg.com/angular/angular.js"></script>
    <body ng-app ng-init="count=0">
      <div>Count={{count}}</div>
       <div ng-click="count = count + 1" ng-class="{'test': stop}" class="clickable">Click Me</div>
       
       <div>
       <input type="checkbox" ng-model="stop">Stop counting
       </div>
    </body>
        3
  •  0
  •   orimdominic    6 年前

    尝试

    <div ng-click="count = count + 1" ng-init="count=0" ng-disabled="!enableClick">Click</div>
    

    ng disabled指令设置窗体字段的disabled属性 (输入、选择或文本区域)。