J'essaie de basculer un texte div en cliquant sur un bouton. J'ai essayé de prendre une variable de portée et de basculer le nom de classe en fonction de la variable. Où est-ce que je fais l'erreur ici
<button ng-click="toggle()">test </button>
<div ng-class="{{state}}" >
hello test
</div>
function ctrl($scope) {
$scope.state = vis;
$scope.toggle = function () {
state = !state;
};
}
.vis{
display:none;
}
Vous pouvez simplifier cela comme
<button ng-click="showDiv = !showDiv">test </button>
<div ng-show="showDiv" >
hello test
</div>
Sauf si vous avez besoin de la classe ng spécifique pour basculer, auquel cas vous pouvez faire quelque chose comme
<button ng-click="showDiv = !showDiv">test </button>
<div ng-class="{'vis' : showDiv }" >
hello test
</div>
(assurez-vous simplement que vous utilisez une version plus récente de angular pour cela)
J'ai changé ta directive ..
html
<button ng-click="toggle()">test </button>
<div ng-show="state" >
hello test
</div>
Contrôleur
function ctrl($scope) {
$scope.toggle = function () {
$scope.state = !$scope.state;
}; }
voir le code complet ici http://jsfiddle.net/nw5ndzrt/345/
Une autre approche ... Utilisez ng-switch
Vous pouvez basculer entre plusieurs divs sans les tracas css ...
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
}
<script src="https://code.angularjs.org/angular-1.0.1.js"></script>
<body ng-app="myApp">
<div ng-controller="MyCtrl">
<button ng-click="showDiv = !showDiv">test </button>
<div ng-switch="showDiv" >
<div ng-switch-default>
hello you
</div>
<div ng-switch-when=true>
hello me
</div>
</div>
</div>
</body>