2013-09-21 11 views
13

Sto utilizzando la direttiva fisarmonica da http://angular-ui.github.com/bootstrap/ e ho bisogno di avere due pulsanti nella parte di intestazione.Fisarmonica UI angolare con pulsanti nella parte di intestazione

  1. Aggiungi - Crea esattamente la stessa fisarmonica sotto l'originale.
  2. Rimuovere - Rimuovere la fisarmonica. (la prima fisarmonica non può essere rimossa - disabilitare il pulsante Rimuovi).

Sono nuovo in AngularJS e per favore aiutatemi a raggiungere questo obiettivo.

risposta

31

Vedere un funzionamento plunker.

basta un'Aggiungere e rimuovere funzione nel vostro controller

$scope.addGroup = function(idx, group, e) { 
    if (e) { 
     e.preventDefault(); 
     e.stopPropagation(); 
    } 

    var newGroup = angular.copy(group); 
    newGroup.no = $scope.groups.length + 1; 
    $scope.groups.splice(idx + 1, 0, newGroup); 
    }; 

    $scope.removeGroup = function(idx, e) { 
    if (e) { 
     e.preventDefault(); 
     e.stopPropagation(); 
    } 

    $scope.groups.splice(idx, 1); 
    }; 

e un ng-repeat per il vostro HTML:

<accordion close-others="oneAtATime"> 
    <accordion-group heading="{{group.title}}" ng-repeat="group in groups"> 
     <accordion-heading> 
      {{ group.title }} ({{group.no}}) 
      <button class="btn btn-small" ng-click="addGroup($index, group, $event)">+</button> 
      <button class="btn btn-small" ng-click="removeGroup($index, $event)" ng-show="$index">-</button> 
     </accordion-heading> 
     {{group.content}} 
    </accordion-group> 
    </accordion> 
+0

Ciao Bekos, questo è quello che sto cercando. Hai risolto il mio problema. Grazie mille – user2801604

+0

Grazie mille! Non sapevo del $ event var quindi questo è stato di grande aiuto! –

1

mettere solo questo e.originalEvent.cancelBubble = true;

$scope.addGroup = function(idx, group, e) { 
    if (e) { 
     e.originalEvent.cancelBubble=true; 
    } 
    var newGroup = angular.copy(group); 
    newGroup.no = $scope.groups.length + 1; 
    $scope.groups.splice(idx + 1, 0, newGroup); 
    }; 

    $scope.removeGroup = function(idx, e) { 
    if (e) { 
     e.originalEvent.cancelBubble=true; 
    } 

    $scope.groups.splice(idx, 1); 
    }; 
Problemi correlati