标题说明了一切。我正在调用控制器中的一个函数,不知何故,客户端一直在反复发送请求。这是功能:
vm.user = null;
vm.getUser=getUser;
function getUser(id){
$http({method:'GET', url: 'http://localhost:8080/api/user/'+id}).
then(function(response){
$scope.status = response.status;
vm.user = response.data;
return vm.user.login;
}, function(response){
$scope.status = response.status;
vm.user = response.data || 'Request failed';
});
}
这是html文件中的调用
<span class="reviewUnitText">{{vm.getUser(vm.review.userId)}}</span>
(加载页面时,该函数只调用一次。无ng-repeat) 为什么一遍又一遍地执行?
答案 0 :(得分:0)
使用for(i = 0; i < metaData.length; i++) {
if(metaData[i].indexOf(search[valueCycle]) > -1) {
cardMatch++;
break;
}
}
。当您在ng-init
内放置函数调用时,每次角度摘要循环运行时,此函数将被执行。这就是为什么要进行多次http请求。
通过使用{{}}
,该函数只会被调用一次。所以你可以从html中分配用户变量。
ng-init
答案 1 :(得分:0)
每当angularjs呈现页面时,它都会评估页面最终呈现中嵌入的所有表达式。
这意味着如果页面上的任何内容发生更改,则会在页面重绘时调用vm.getUser()
函数,因为不相关的内容已更改。如果您的任何功能有副作用:例如vm.getUser()
更新vm.user
这将触发另一个页面呈现,以便再次调用vm.getUser()
。
避免在HTML中调用的任何表达式中产生副作用(ng-init
除了那些仅在首次呈现元素时发生的表达式)。