Подтвердить что ты не робот

Angular Пользовательский интерфейс с кнопками в части заголовка

Я использую директиву гармоники от http://angular-ui.github.com/bootstrap/, и мне нужно иметь две кнопки в части заголовка.

  • Добавить. Создайте точно такой же аккордеон под оригиналом.
  • Удалить - удалить аккордеон. (первый аккордеон не может быть удален -   отключите кнопку "Удалить" ).

Я новичок в AngularJS и помогу мне в этом.

4b9b3361

Ответ 1

См. рабочий плункер.

Вам просто нужна функция добавления и удаления в вашем контроллере

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

и a ng-repeat для вашего 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>

Ответ 2

введите только этот 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);
  };