如何覆盖函数的执行或拦截调用呢?

时间:2014-04-11 13:19:59

标签: javascript angularjs

我在启动模态窗口时打开了角度,它在模态窗口$ scope上提供了两个函数$ dismis和$ close。我需要在调用其中任何一个之前触发事件。目前控制器中的代码如下所示

  $scope.$emit("ModalClosing");
  $scope.$close(payload);

我想要的是消除手动调用$ emit的需要,我希望能够做到

$ scope。$ close(payload),以便$ close函数的实现执行上面的步骤。如何实现这一目标?它可能需要类似于模拟框架使用的东西。我基本上需要拦截对函数的调用并调用我的代码,然后调用原始函数。

更新:在我发布问题后,我想为什么不用我的实现替换它。我简直不敢相信它。这是正确的吗?还有更好的方法吗?

        var closeModal = $scope.$close;
        $scope.$close = function (payload) {
            $scope.$emit("ModalClosing");
            closeModal(payload);
        };

1 个答案:

答案 0 :(得分:0)

在我发布问题后,我想为什么不用我的实现替换它。我简直不敢相信它。这是正确的吗?还有更好的方法吗?

 var closeModal = $scope.$close;
 $scope.$close = function (payload) {
      $scope.$emit("ModalClosing");
      closeModal(payload);
 };