2017-10-04 59 views
0

我有问题,在HTML与 角JS 我呼吁函数 控制器

<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;    

     }); 
    }} 

如果我点击一次它工作正常,但ii点击第二次循环第二个功能两次。

+0

这很奇怪,你绑定到一个函数,每次点击时执行的作用域。你只需要正常绑定一次,它不应该在该功能 – Huangism

回答

1

你打电话,每次test2()你点击:

ng-click="test();test2()" 

其每次订阅事件:

$scope.test2=function(){ 
    $scope.$on('data:saved', function (event,tags) 

你只是想订阅一次,所以test2()不应该叫每次点击。只需调用一次,并测试test()播放事件并处理。

+0

我的两个按钮是点击我 button class =“btn “ng-click =”test()“> TestOn –

+0

看起来你的'test'函数的目的是广播'test2'函数订阅的内容。因此,你可能不想在'ng-click'中调用'test2()'。你想调用'test()',看看你的订阅是否有效 –

+0

是的。但我有两个不同的按钮。一个只有一个API呼叫测试和第二我需要两个一起运行,这就是为什么我使用$ rootcope。$广播。你说它的工作,如果一个函数调用 –

相关问题