我已经定义了这样的函数
$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(),但除此之外,它也会在sometask()上调用。但我没有在这两件事之间找到任何约束或联系。
我知道我对我面临的问题给出了一个非常模糊和模糊的图像。如果您需要更多代码或确切代码,请发表评论。我没有在这里做出确切评论的原因是它非常大而且凌乱,我不确定问题所在的部分。
注意:我认为我的问题没有得到理解。我想知道的是&#34;是否可以知道谁调用func2(),无论什么时候被调用?&#34;
答案 0 :(得分:1)
也许..
$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
可能会再次被调用,因为您在模板中调用它。这就是为什么当你点击时,模板会被刷新(消化)并再次运行。
答案 1 :(得分:0)
没有足够的声誉评论如此回答..
您正在func1中定义func2。它不会叫它。你必须明确地打电话。
$scope.func2 = function() {
...
some other task done here
}
$scope.func1 = function() {
...
// some task done here;
$scope.func2();
}
答案 2 :(得分:0)
答案 3 :(得分:0)
我想你可以使用这个(如果我帮你做对的话)
<div class="someclass">{{func2 ($event)}}</div>
<div class="someRandomLinks" ng-click="sometask($event)">clickMe</div>
而不是Ctrl:
function func2(event) { ..... }
function sometask(event) { ... }
并且通过该事件,您可以获取元素触发函数。
答案 4 :(得分:0)
因此,通过这种方式,您有两个测试用例。
func2
。func2
由sometask()
因此,当您通过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);
}