首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >angular-ui-bootstrap折叠/全部展开

angular-ui-bootstrap折叠/全部展开
EN

Stack Overflow用户
提问于 2014-01-03 00:44:43
回答 2查看 36.3K关注 0票数 6

我想为一组手风琴创建一个collpase/expand all按钮。我使用的是angular.js v1.2.6和angular-bootstrap-UI0.9.0。我还没有找到一个如何做collpase/expand all的例子。我是一个角度的新手,任何建议或建议都是非常感谢的。

此外,我应该补充说,this post中的解决方案不适用于我正在使用的较新版本的angular.js (v1.0.8 vs v1.2.6) (这是本文发布时的最新版本)。在较新的版本中,它抛出了一个关于尝试创建两个隔离作用域的错误。

标记:

代码语言:javascript
复制
    <div ng-controller="myCtlr">

     <accordion close-others="oneAtATime">

     <button class="btn" ng-click="section.isCollapsed = !section.isCollapsed">Toggle Sections</button>

      <accordion-group ng-repeat="section in sections" is-open="section.isOpen">
       <accordion-heading>
        <div class="accordion-heading-content" ng:class="{collapsed: section.isOpen}">
          {{section.name}}
        </div>
       </accordion-heading>
        Section content
      </accordion-group>

     </accordion>

   </div>

JS:

代码语言:javascript
复制
var theapp = angular.module('myApp', [
  'ui.bootstrap'
])

function myCtlr ($scope) {
 $scope.isCollapsed = false;
 $scope.sections = [
    {'id': '353','otherid': '7','name': 'One','Sequence': '1'},
    {'id': '354','otherid': '8','name': 'Two','Sequence': '1'},
    {'id': '355','otherid': '9','name': 'Three','Sequence': '1'}
];

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-03 20:52:47

下面是一个使用is-open属性的方法。http://plnkr.co/edit/MliW41xGJAF0Mnw4Rgu7?p=preview

票数 0
EN

Stack Overflow用户

发布于 2015-05-08 02:33:15

我采纳了Blowsie的评论,并构建了我自己的答案,解决了我在这里阅读的用例。

我已经将close-other属性移到了文档所说的accordion元素中。我还为openAll、closeAll或toggleAll添加了额外的按钮。

如果单击单个项目的标题,则只打开该项目。如果你点击一个“全部”按钮,所有的都会受到影响。

感谢布洛西给我的灵感。我认为在这里使用item.open是最好的选择。在那之后,就是影响所有item.open值的问题了。

http://plnkr.co/edit/WUKEfcBrSf3XrIQAik67?p=preview

HTML

代码语言:javascript
复制
<div ng-controller="AccordionDemoCtrl">

  <accordion close-others="false">
    <accordion-group ng-repeat="item in items" is-open="item.open" heading="{{item.name}}">
      {{item.open}}
      <p>The body of the accordion group grows to fit the contents</p>
    </accordion-group>
  </accordion>

  <button ng-click="openItem(0)">Open 1</button>
  <button ng-click="openItem(1)">Open 2</button>
  <button ng-click="openItem(2)">Open 3</button>
  <button ng-click="openAllItems()">Open All</button>
  <button ng-click="closeAllItems()">Close All</button>
  <button ng-click="toggleAllItems()">Toggle All</button>
  <br/>

 {{items |json}}
</div>

JS

代码语言:javascript
复制
angular.module('plunker', ['ui.bootstrap']);
function AccordionDemoCtrl($scope) {
  $scope.oneAtATime = true;

  $scope.items = [
    {name: 'Item 1', open: false},
    {name: 'Item 2', open: false},
    {name: 'Item 3', open: false}
  ];

  $scope.addItem = function() {
    var newItemNo = $scope.items.length + 1;
    $scope.items.push('Item ' + newItemNo);
  };


  $scope.openItem = function(idx) {
    console.log(idx);
    $scope.items[idx].open = true; 
  };

  $scope.openAllItems = function(){
    $scope.items.map(function(item){
      item.open = true;
    });
  };

  $scope.closeAllItems = function(){
    $scope.items.map(function(item){
      item.open = false;
    });
  }

  $scope.toggleAllItems = function(){
    $scope.items.map(function(item){
      item.open = !item.open;
    });
  }

}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20887536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档