从元素中动态取消绑定点击:angularjs

时间:2015-06-10 10:49:36

标签: javascript angularjs

我有一个具有ng-click事件的元素,并且在单击它时添加一个工作正常的div。我想要的是在添加div后删除ng-click。

一种方法是使用ng-if

  <div ng-click="addDiv()" ng-if="!divAdded" >                   
                        <span>i add a div</span> 
               </div>

 <div class="disabled" ng-if="divAdded" >                   
                        <span>i add a div</span> 
               </div>

为此我必须为可以开启和关闭的单个元素添加多个div。 有没有办法像我们动态地在jquery中那样取消绑定点击事件?

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:2)

将该逻辑放入controller,而不是view

控制器:

(function(){

function divAddController() {
    var self = this;

    self.divAdded = false;

    self.addDiv = function() {
        if(!divAdded) { 
            //Add div here
            self.divAdded = true;
        }
    }
}

angular.module("example")
.controller("divAddController", divAddController);

})();

查看:

<div ng-controller="divAddController as divAdder">
    <div ng-click="divAdder.addDiv()" ng-class="{disabled: divAdder.divAdded}">
        <span>i add a div</span>
    </div>
</div>

答案 1 :(得分:2)

你也可以这样做:

<div ng-click="divAdded || addDiv()" >                   
    <span>i add a div</span> 
</div>

如果addDiv()为真

,这将阻止ng-click调用divAdded

答案 2 :(得分:0)

您可以通过以下更简单的方式完成此操作:

&#13;
&#13;
var myApp = angular.module('myApp', []);

myApp.controller('MyCtrl', function($scope) {
  $scope.showDiv = false;
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="myApp" ng-controller="MyCtrl">
  <button ng-click="showDiv = true;">I show the div</button>
  <div ng-if="showDiv">I am visible!</div>
</div>
&#13;
&#13;
&#13;