2013-09-21 30 views
13

Tôi đang sử dụng chỉ thị accordion từ http://angular-ui.github.com/bootstrap/ và tôi cần phải có hai nút trong phần tiêu đề.Giao diện người dùng góc với các nút trong phần tiêu đề

  1. Thêm - Tạo chính xác cùng một accordion bên dưới bản gốc.
  2. Xóa - Xóa accordion. (Không thể xóa accordion đầu tiên - vô hiệu hóa nút Xóa).

Tôi mới sử dụng AngularJS và vui lòng giúp tôi đạt được điều này.

Trả lời

31

Xem hoạt động plunker.

Bạn chỉ cần một add và remove chức năng trong điều khiển của bạn

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

ng-repeat cho html của bạn:

<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

Xin chào, đây là những gì tôi đang tìm kiếm. Bạn đã giải quyết được vấn đề của tôi. Cảm ơn bạn – user2801604

+0

Cảm ơn tuyệt vời! Tôi không biết về sự kiện $ var vì vậy đây là một trợ giúp tuyệt vời! –

1

đặt chỉ này 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); 
    }; 
Các vấn đề liên quan