我对Angular js有疑问 我正在呼吁功能 在HTML中 控制器
<button class="btn" ng-click="test()"> Save</button>
<button class="btn" ng-click="test();test2()"> New</button>
$scope.test= function(){
$http.put(settings.WebApiBaseUrl + 'api/myfile/' , {
headers: {
'X-ApiKey': myKey
}
}).success(function (data) {
$rootScope.$broadcast('data:saved')
$scope.loading = false;
}).error(function (data, status, headers, config) {
$scope.loading = false;
});
}
和我打电话的其他功能
$scope.test2=function(){ $scope.$on('data:saved', function (event,tags)
{
$http.post(settings.WebApiBaseUrl + 'api/myfile/' , {
headers: {
'X-ApiKey': myKey
}
}).success(function (data) {
$scope.loading = false;
}).error(function (data, status, headers, config) {
$scope.loading = false;
});
}}
如果我点击一次它工作正常但我点击第二次它循环第二个功能两次。
答案 0 :(得分:1)
每次点击时,您都会调用test2()
:
ng-click="test();test2()"
每次订阅该活动:
$scope.test2=function(){
$scope.$on('data:saved', function (event,tags)
您只想订阅一次,因此每次点击都不应该调用test2()
。只需调用一次,并测试test()
广播事件并进行处理。