如何知道谁是AngularJS中的调用方函数

How to know who is the caller function in AngularJS?

本文关键字:方函数 函数 调用 何知道 AngularJS      更新时间:2023-09-26

我定义了这样的函数

    $scope.func1 = function(){
    //some task done here;
     $scope.func2 = functin(){
         //some other task done here
     }
}

现在在控制器中,我调用了 func1;但是直接调用func2是写在模板上的,例如

<div class="someclass">{{func2 ()}}</div>
<div class="someRandomLinks" ng-click="sometask()">clickMe</div>
现在,当

浏览器遵守/执行此行时,一旦调用func2(),但是除此之外,它也会在某个task()上调用。但我没有发现这两件事之间的任何绑定或联系。

我知道我对我所面临的情况给出了一个非常非常模糊和模糊的图像。如果您需要更多代码或确切代码,请发表评论。我没有在这里发表确切评论的原因是它非常大且混乱,我不确定问题出在哪一部分。

注意:我认为我的问题没有得到理解。我想知道的是"是否有可能知道谁在调用func2(),每当它被调用时??

也许..

$scope.func1 = function() {
  ...
  // some task done here;
}
$scope.func2 = function() {
  ...
  some other task done here
}

在您的示例中,func2是在 func1 中定义的。

编辑:

func2是直接调用的,因为您直接在模板中调用它。此外,如果函数只是在另一个函数中定义,则不会直接执行函数。

function a() {
  ...
  function b() {
    ..
  }
}
a(); // This does not launch b().

编辑2:

您的func2再次被调用可能是因为您在模板中调用它。这就是为什么当您单击时,模板会刷新(消化)并再次运行。

没有足够的声誉来评论所以回答..

您正在 func1 中定义 func2。它不会打电话。您必须明确调用。

$scope.func2 = function() {
  ...
  some other task done here
}
$scope.func1 = function() {
  ...
  // some task done here;
  $scope.func2();
}

我不确定我是否完全理解你的问题,但我会尝试。

问题是,只有在运行func1时,您才定义func2

结果是{{func2()}}被评估为未定义,因此您看不到任何内容。

看看这个JSFiddle

我想

你可以使用它(如果我猜对了)

<div class="someclass">{{func2 ($event)}}</div>
<div class="someRandomLinks" ng-click="sometask($event)">clickMe</div>

比在 Ctrl 中:

function func2(event) { ..... }
function sometask(event) { ... }

通过该事件,您可以让元素触发函数。

因此,通过这种方式,您有两个测试用例。

  1. 函数 func2 在浏览器完成加载时调用。
  2. 函数func2sometask()调用

因此,当您调用func2时,sometask()传递了其他参数,例如

$scope.func2 = function(str) {     
    if(str==1010)
       console.log("I have called by sometask");
    }else{
       console.log("I have called by browser..");
    }
}
    $scope.sometask  = function() {
      $scope.func2(1010);  
    }