javascript - 页面加载时 Angular 过滤器和打开 Accordion 的问题

标签 javascript angularjs twitter-bootstrap angular-filters

由于添加 Angular 过滤器, Accordion 在页面加载时无法打开。我猜这与代码 is-open="group.isOpen"group 在该实例中不再有效有关?因为代码现在使用 键,值?我做错了什么?

Here's a plunker的问题。

** 编辑:((并且,根据评论中的要求,在添加 Angular 过滤器之前在页面加载时打开 Accordion 的 here's a plunker ))。

这是 html:

<div ng-controller="AccordionDemoCtrl">
    <accordion close-others="oneAtATime">

      <accordion-group is-open="group.isOpen" ng-repeat="(key, value) in groups | groupBy: 'title'">
        <accordion-heading><i class="glyphicon-plus"></i> {{ key }}
          <i class="pull-right glyphicon" ng-class="{'glyphicon-chevron-down': group.isOpen, 'glyphicon-chevron-right': !group.isOpen}"></i>
        </accordion-heading>
       <p ng-repeat="group in value"> {{ group.content }}</p>
        <ul>
      <li ng-repeat="group in value">

        {{ group.list }}
      </li>
    </ul>

      </accordion-group>

    </accordion>
  </div>

这是js:

angular.module('app', ['ui.bootstrap','ngSanitize','angular.filter']);
angular.module('app').controller('AccordionDemoCtrl', function ($scope) {
  $scope.oneAtATime = true;

  $scope.groups = [
    {
      title: 'title 1',
      content: 'content 1',
      isOpen: true,
      list: 'item0a'
    },
    {
      title: 'title 2',
      content: 'Content 2',
      list: 'item0b' 
    },
    {
      title: 'title 3',
      content: 'Content 3',
      list: 'item0c' 
    },
    {
      title: 'title 4',
      content: 'content 4',
      list: 'item0d' 
    },
    {
      title: 'title 5',
      content: 'content 5',
      list: 'item0e' 
    },
    {
      title: 'title 1',
      list: 'item1a'
    },
    {
      title: 'title 1',
      list: 'item2a'
    },
    {
      title: 'title 1',
      list: 'item3a'
    },
    {
      title: 'title 2',
      list: 'item1b'
    },
    {
      title: 'title 2',
      list: 'item2b'
    },
    {
      title: 'title 3',
      list: 'item1c'
    },
    {
      title: 'title 3',
      list: 'item2c'
    },    
    {
      title: 'title 4',
      list: 'item1d'
    },
    {
      title: 'title 5',
      list: 'item1e'
    }
  ];
});

最佳答案

我不知道你的对象结构是否有特定的原因,但类似

{
  title: 'title 1',
  content: 'content 1',
  isOpen: true,
  list: ['item1a',
    'item2a',
    'item3a']
}

对我来说更有意义。现在,除了添加列表之外,您基本上不需要对实际 View 进行太多更改。

    <ul>
      <li ng-repeat="item in group.list">
        {{ item }}
      </li>
    </ul>

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

关于javascript - 页面加载时 Angular 过滤器和打开 Accordion 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31215029/

相关文章:

javascript - 简单的 jquery 验证创建错误消息

javascript - angular toggle n-click 函数调用

javascript - 如何使用 jquery 从 html 加载 div?

html - Bootstrap 'col' 标签不会将文章拉入尽可能多的行

html - Bootstrap 。删除缩略图周围的边框

javascript - Angular 解析错误 - token 是意外 token

javascript - 如何使用谷歌的 Closure 编译 JavaScript

javascript - 新的 ECMAScript 6 导入和导出是异步的吗?

javascript - AngularJS $resource 正在添加 $resolve 和 $promise

AngularJS - IdentityServer4.Quickstart.UI - 'AuthenticationProperties' 是一个模棱两可的引用