Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.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,我编写了一个angular代码来实现Like和remove Like功能。为此,我使用了一个指令“like directive”,它有三个功能 1.upFn:需要时执行的代码 2.downFn:删除类似项时要执行的代码 3.upvChk:检查是否喜欢它的函数。我是从假的开始的 由于某些原因,我不能使用带有ng if的变量。我必须使用upvChk函数。但是这个函数被调用了不止两次。应该只调用两次,因为我使用了两次ng if 这是代码笔链接 angular.module('app',[]) .co

我编写了一个angular代码来实现Like和remove Like功能。为此,我使用了一个指令“like directive”,它有三个功能 1.upFn:需要时执行的代码 2.downFn:删除类似项时要执行的代码 3.upvChk:检查是否喜欢它的函数。我是从假的开始的

由于某些原因,我不能使用带有ng if的变量。我必须使用upvChk函数。但是这个函数被调用了不止两次。应该只调用两次,因为我使用了两次ng if

这是代码笔链接

angular.module('app',[])
.controller('MainCtrl',['$scope',MainCtrl])
.指令('likeDirective',[likeDirective]);
函数MainCtrl($scope){
var mcl=这个;
mcl.checkUpvoted=checkUpvoted;
mcl.upvote=upvote;
mcl.downvote=downvote;
函数checkUpvoted(){
警报(“检查是否喜欢的功能”);
返回mcl.upvoted;
}
函数upvote(){
警报(“类似已完成”);
mcl.upvoted=true;
}
函数downvote(){
警报(“不喜欢已完成”);
mcl.upvoted=false;
}
}
函数likeDirective(){
返回{
限制:'E',
范围:{
upFn:“&upFn”,
downFn:“&downFn”,
upvChk:“&upvChk”
},
templateUrl:'tpl.html'
}
}

喜欢

这可能是由于消化循环以角度工作的方式造成的。在第一次运行时,它将检查值并调用
upvChk()
。第一次摘要运行完成后,它将再次运行,以查看在第一次摘要运行期间是否有任何更改,从而再次调用
upvChk()
。摘要循环将一直运行,直到检测不到任何更改或达到10次迭代,然后它将抛出一个错误。有没有办法只运行一次?可能没有,因为它是角度摘要循环调用它。您可以尝试一次性绑定,但我不确定这是否适用于函数。这可能是因为摘要循环在函数中的工作方式。在第一次运行时,它将检查值并调用
upvChk()
。第一次摘要运行完成后,它将再次运行,以查看在第一次摘要运行期间是否有任何更改,从而再次调用
upvChk()
。摘要循环将一直运行,直到检测不到任何更改或达到10次迭代,然后它将抛出一个错误。有没有办法只运行一次?可能没有,因为它是角度摘要循环调用它。您可以尝试一次性绑定,但我不确定这是否适用于函数。