2016-07-01 8 views
1

私はトグルとして使用している次のボタンがあります。ここでボタンをクリックしたときに2つの機能を切り替えます。

<button ng-click="togglefunction()">Toggle Data</button> 

$scope.toggleToolPanel = function() { 
     // need to put below 2 functions here so that when user clicks 1st time, function 1 executes. when user clicks again, function 2 executes and so on. 
    }; 

これらtoggleFunction

内部で交互に実行されるはずです2つの機能
function function1(params) { 
       return '<span >' + data + '</span>'; 
    } 

function function2(params) { 
       return '<span >' + data *100 + '</span>'; 
    } 

答えて

2

があなたのコントローラにこれを追加している動作するはずトグル一部です:

$scope.firstFunction = false; 

次に、以下にごtoggleToolPanelを変更:ボタン要素上のクラスの切り替え

$scope.toggleToolPanel = function() { 
    $scope.firstFunction = !$scope.firstFunction; 
    if($scope.firstFunction) { 
     function1(params); 
    } else { 
     function2(params); 
    } 
}; 
1

がクリックされるたび。 classList.toggleを参照してください。クリックイベントハンドラでは、classList.containsを使用して、トグルの有無を調べます。もしxがあれば、そうでなければyをします。

1

クリーナーコードは以下に添付されている:

angular.module('mainModule', []) 
     .controller('MainCtrl', ['$scope', function($scope) { 
      $scope.toggle = function() { 
     $scope.isToggled = !$scope.isToggled; 
     var params = $scope.isToggled; 

       $scope.isToggled ? toggleIn(params) : toggleOut(params); 

      }; 

      function toggleIn(params) { 
     console.log(params); 
     } 

      function toggleOut(params) { 
     console.log(params); 
      } 


     }]); 

<body ng-app="mainModule"> 
<div ng-controller="MainCtrl"> 
    <input type="button" value="Toggle" ng-click="toggle()" /> 
</div> 

</body> 
関連する問題