2017-10-04 78 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。$廣播。你說它的工作,如果一個函數調用 –

相關問題