繁体   English   中英

AngularJS一次只显示一个列表项

[英]AngularJS only showing one list item at a time

HTML

<ul class="column__list">
    <li class="column__list--item" ng-repeat="task in tasks | orderBy:'name':false" data-ng-class="{active:taskIndex=={{$index}}}">
        <div class="column__list--expand fa" ng-click="expand = !expand" ng-class="{'fa-chevron-down': !expand, 'fa-chevron-up': expand}"></div>
        <div class="column__list--actions slide" ng-show="expand">
            {{ children }}
        </div>
    </li>
</ul>

ANGULAR

angular.module('App.animate', [])
        .animation('.slide', function() {
            var NgHideClassName = 'ng-hide';
            return {
                beforeAddClass: function(element, className, done) {
                    if(className === NgHideClassName) {
                        jQuery(element).slideUp(done);
                        console.log('0');
                    }
                },
                removeClass: function(element, className, done) {
                    if(className === NgHideClassName) {
                        jQuery(element).hide().slideDown(done);
                        console.log('1');
                    }
                }
            }
        });

我有上面的内容,当单击div时将滑动并再次单击时将slideUp .column__list--expand

这行得通,但是如果我只想一次展示一个li并同时更新ng-class怎么办?

jsFiddle示例

将模板更改为:

<div ng-app="testApp" ng-controller="testController">
    <ul class="column__list">
      <li class="column__list--item" ng-repeat="task in tasks | orderBy:'name':false" data-ng-class="{active:taskIndex=={{$index}}}">
        <div class="column__list--expand fa" ng-click="$parent.selectedTask = $parent.selectedTask == task ? null : task" ng-class="{'fa-chevron-down': $parent.selectedTask!=task, 'fa-chevron-up': $parent.selectedTask==task}">{{ task.title }}</div>
        <div class="column__list--actions slide" ng-show="$parent.selectedTask==task">
            {{ task.description }}
        </div>
      </li>
    </ul>
  </div>

jsfiddle解决方案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM