加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

AngularJS – 如何覆盖指令ngClick

发布时间:2020-12-17 07:06:22 所属栏目:安全 来源:网络整理
导读:我想覆盖指令ng-click:在每次执行ng-click之前对某些进行一些$rootscope的更改.怎么做? 解决方法 您不能覆盖AngularJS内置指令.但是,您可以使用相同的名称定义多个指令,并针对同一元素执行它们.通过为指令分配适当的优先级,您可以控制指令是在内置指令之前
我想覆盖指令ng-click:在每次执行ng-click之前对某些进行一些$rootscope的更改.怎么做?

解决方法

您不能覆盖AngularJS内置指令.但是,您可以使用相同的名称定义多个指令,并针对同一元素执行它们.通过为指令分配适当的优先级,您可以控制指令是在内置指令之前还是之后运行.

此plunker显示了如何构建在内置ng-click之前执行的ng-click指令.代码也如下所示.单击链接时,将首先运行自定义ng-click,然后执行内置ng-click.

的index.html

<!DOCTYPE html>
<html ng-app="app">

  <head>
    <script data-require="jquery@1.9.0" data-semver="1.9.0" src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.9.0/jquery.js"></script>
    <script data-require="angular.js@1.0.7" data-semver="1.0.7" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js"></script>
    <script src="script.js"></script>
  </head>

  <body ng-controller="MyCtrl">
    <a ng-click="alert()">Click me</a>
  </body>

</html>

的script.js

angular.module('app',[])
  .directive('ngClick',function($rootScope) {
      return {
        restrict: 'A',priority: 100,// give it higher priority than built-in ng-click
        link: function(scope,element,attr) {
          element.bind('click',function() {
            // do something with $rootScope here,as your question asks for that
            alert('overridden');
          })
        }
      }
  })
  .controller('MyCtrl',function($scope) {
    $scope.alert = function() {
      alert('built-in!')
    }
  })

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读