gpt4 book ai didi

AngularJS - 如何覆盖指令 ng Click

转载 作者:行者123 更新时间:2023-12-03 10:17:49 24 4
gpt4 key购买 nike

我想覆盖指令 ng-click: 在每次执行 ng-click 之前进行一些 $rootscope 更改。怎么做?

最佳答案

您不能覆盖 AngularJS 内置指令。但是,您可以定义多个具有相同名称的指令,并针对同一个元素执行它们。通过分配适当的 priority到你的指令,然后你可以控制你的指令是在内置指令之前还是之后运行。

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!')
}
})

关于AngularJS - 如何覆盖指令 ng Click,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18421732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com