2013-09-21 14 views
13

http://angular-ui.github.com/bootstrap/のアコーディオン指令を使用しており、ヘッダー部分に2つのボタンが必要です。ヘッダー部分のボタン付き角度付きUIアコーディオン

  1. 追加 - オリジナルより正確に同じアコーディオンを作成します。
  2. 削除 - アコーディオンを取り外します。 (最初のアコーディオンは削除できません - 削除ボタンを無効にしてください)。

私はAngularJSを初めて使用しており、これを達成するために手伝ってください。

答えて

31

plunkerを参照してください。

は、あなただけの追加を必要とし、あなたのコントローラ

$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); 
    }; 

し、HTMLのためng-repeatに機能を削除します。

<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

こんにちはベコス、これは私が探しているものです。あなたは私の問題を解決しました。ありがとうございます – user2801604

+0

すばらしいおかげで!私は$イベントvarについて知りませんでしたので、これは大きな助けになりました! –

1

置くだけで、この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); 
    }; 
関連する問題