javascript - AngularJS 一次只显示一个列表项

标签 javascript jquery angularjs angularjs-scope

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 将向下滑动,再次单击时将向上滑动 .column__list--expand

这可行,但如果我只想一次显示一个 li 并且也更新 ng-class 该怎么办?

jsFiddle example

最佳答案

将模板更改为:

<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 solution

关于javascript - AngularJS 一次只显示一个列表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25939871/

相关文章:

javascript - AngularJS 模块架构

javascript - 功能仅适用于 1 个标记

javascript - 动画 SVG + 跨浏览器兼容性

javascript - Angular 库的 DefinelyTyped 与 index.d.ts

AngularJS $http.post如何将json数据设置到请求正文中

javascript - 如何创建一个使用 ng-model 的 Angular 日期选择器指令

javascript - 美丽汤/正则表达式 : Find specific value from href

javascript - 使用 Webpack 2 将数据传递到 ejs 部分

javascript - knockout 不绑定(bind)值

javascript - 当父元素的动画进度达到 75% 时,如何触发子元素的动画?