AngularJS: la direttiva ng-switch

AngularJS: la direttiva ng-switch

Come suggerisce il suo nome, questa direttiva di AngularJS implementa un costrutto comune a molti linguaggi di programmazione.

Per prima cosa implementiamo un controller con le nostre opzioni:


var app = angular.module('MyApp', []);


app.controller('ChoiceCtrl', ['$scope', function($scope) {
	$scope.chosenLanguage = '';
	$scope.languages = ['JavaScript', 'PHP'];
}]);

Quindi usiamo ng-switch:


<body ng-app="MyApp">
	<div ng-controller="ChoiceCtrl">
		<p>
			<select name="choice" class="form-control" ng-model="chosenLanguage" ng-options="language for language in languages">
				<option value="">Choose a language</option>
			</select>
		</p>
		<div class="switch-container" ng-switch on="chosenLanguage">
			<p ng-switch-when="JavaScript">AngularJS, jQuery</p>
			<p ng-switch-when="PHP">Zend Framework, Symphony</p>
			<p ng-switch-default>Choose a language</p>
		</div>
	</div>	
</body>

Quando l'utente seleziona un linguaggio viene mostrato l'elemento con il testo corrispondente. Usando un approccio tradizionale avremmo avuto:


var select = document.querySelector( "select[name=choice]" );
var container = document.querySelector( ".switch-container" );

select.addEventListener( "change", function() {
	var value = this.value;
	var msg = "";
	
	switch( value ) {
		case "JavaScript":
			msg = "AngularJS, jQuery";
			break;
		case "PHP":
			msg = "Zend Framework, Symphony";
			break;
		default:
			msg = "Choose a language";
			break;
	}	
	container.innerHTML = "<p>" + msg + "</p>";
}, false);

Torna su