Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 拦截对控制器的呼叫_Angularjs - Fatal编程技术网

Angularjs 拦截对控制器的呼叫

Angularjs 拦截对控制器的呼叫,angularjs,Angularjs,我可以拦截对控制器方法的调用吗? 我正在搜索Castle Windsor Proxy objects interceptos之类的东西,以实现AOP之类的东西 例如: <button ng-click="buttonClick()"/> <button ng-click="i = i + 1"/> 我想了解如何在单击执行之前和之后执行一些代码 有什么想法吗?您可以添加一个指令来拦截任何元素的单击事件 HTML: [我不确定是否可以实现一种通用方法] 下面是一个结合了

我可以拦截对控制器方法的调用吗? 我正在搜索Castle Windsor Proxy objects interceptos之类的东西,以实现AOP之类的东西

例如:

<button ng-click="buttonClick()"/>
<button ng-click="i = i + 1"/>

我想了解如何在单击执行之前和之后执行一些代码


有什么想法吗?

您可以添加一个指令来拦截任何元素的单击事件

HTML:


[我不确定是否可以实现一种通用方法] 下面是一个结合了Dennis方法的JSFIDLE 您只需重用现有的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
              });
          }
      }
  }
});

我想要更通用的,但现在我要用它了。谢谢,如果您注意到更多关于它的信息,请告诉我;)正如我所说的,ng click只是一个例子。。。这不是我在搜索。感谢
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
      });
    }
  };
});
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
              });
          }
      }
  }
});