我可以拦截对控制器方法的调用吗? 我搜索像Castle Windsor Proxy对象的拦截器,用于实现类似AOP的东西。
例如:
<button ng-click="buttonClick()"/>
<button ng-click="i = i + 1"/>
我想找到如何在ng-click执行之前和之后执行一些代码。
有什么想法吗?
答案 0 :(得分:1)
您可以添加一个指令来拦截任何元素的click事件。
HTML:
<button ng-click="buttonClick()" intercept-click />
JavaScript的:
app.directive('interceptClick', function() {
return {
priority: 1,
terminal: true,
link: function (scope, element, attr) {
var clickAction = attr.ngClick;
element.bind('click',function () {
// Do something before executing the click action
scope.$eval(clickAction);
// Do something after executing the click action
});
}
};
});
答案 1 :(得分:0)
[我不确定是否可以实现一般方法] 这是一个结合丹尼斯方法的jsfiddle 您只需重用现有的ngclick指令。
myApp.directive('ngClick', function() {
return {
restrict:'A',
link: {
pre: function(scope,element){
element.bind('click',function () {
console.log('interceptor');
// scope.$eval(clickAction);
// Do something after executing the click action
});
}
}
}
});