Utilizzo di angular e jquery Ho implementato la funzione slideToggle. Per applicare questa funzione solo a uno specifico elemento HTML, sto usando all'interno di funzione un parametro ng-click, il mio codice funziona bene ma, voglio sapere se esiste un altro modo migliore per implementare le direttive e le funzioni di ng-clic in angolare:Implementazione della funzione Angular Directive e Jquery slideToggle
index.html
<!DOCTYPE html>
<html ng-app="myApp" ng-controller="MainController">
<head>
<title></title>
<link type="text/css" rel="stylesheet" href="css/styles.css"/>
</head>
<body>
<div>
<input type="button" ng-click="toggle('first')" value="Toggle First">
<input type="button" ng-click="toggle('second')" value="Toggle Second">
<input type="button" ng-click="toggle('third')" value="Toggle third">
<div class="div1" section="first" toggle="first" >
<p>This is section #1</p>
</div>
<div class="div1" toggle="second">
<p>This is another section #1</p>
</div>
<div class="div1" toggle="third">
<p>This is 3 section #1</p>
</div>
</div>
</body>
<footer>
<script src="js/jquery.min.js"></script>
<script src="js/angular.js"></script>
<script src="js/directives.js"></script>
</footer>
</html>
styles.css
.div1 {
background: Brown;
width: 200px;
height: 200px;
text-align: center;
}
.div1 p {
position: relative;
top: 50%;
}
directives.js
angular.module("myApp", []) //
.controller('MainController', function($scope) {
$scope.toggle = function(section) {
console.log('<toggle function> section :' + section);
$scope.section = section;
$scope.$broadcast('event:toggle');
}
}) //
.directive('toggle', function() {
return function(scope, elem, attrs) {
scope.$on('event:toggle', function() {
if(attrs.toggle == scope.section){
elem.slideToggle('fast');
}
});
};
});
Una preoccupazione della mia è il modo in cui sto comunicando tra la direttiva e la portata:
$scope.section = section;
e
if(attrs.toggle == scope.section){
Io apprezzo qualche consiglio per un'attuazione migliore angolare .
Grazie
Se si desidera mantenere pulito il controller si potrebbe istituire un servizio che gestisce i vostri contenitori commutate oppure è possibile aggiungere un ID personalizzato ad ogni evento trasmesso come $ trasmissione ('ginocchiera' + qualcosa). –