gpt4 book ai didi

javascript - Angular 2 排序列表动画

转载 作者:数据小太阳 更新时间:2023-10-29 04:21:15 25 4
gpt4 key购买 nike

我会发布代码,但我真的不知道从哪里开始。我已经阅读了 https://angular.io/docs/ts/latest/guide/animations.html动画指南,但它不能满足我的要求。

因此,假设您有一个使用 *ngFor 显示的项目列表,并且列表顶部包含排序按钮。例如说默认排序是“姓名”。它会在初始屏幕上显示如下

Sort By: Name | Value
[name: a, value:3]
[name: b, value:2]
[name: c, value:1]

然后假设用户按下“值”以按值排序。

Sort By: Name | Value
[name: c, value:1]
[name: b, value:2]
[name: a, value:3]

我知道我可以简单地对绑定(bind)到 View 组件的列表进行排序,但我想要动画。这甚至可以通过当前的 Angular 2 Animation API 实现吗?

最佳答案

这是可以做到的,想法是让所有的元素在任何时候都被渲染。相反,我们只是根据它们的顺序更改每个元素的属性,因此它会触发动画。

我只是做了一个非常简单的来展示这个想法。

angular.module('StackApp', [])
.controller('MainCtrl', function($scope) {
'use strict';

$scope.title = 'List';
var item1 = { title: "orange", pos: 1 };
var item2 = { title: "apple", pos: 2 };
var item3 = { title: "banana", pos: 3 };

$scope.items = [item1, item2, item3];

$scope.sort = function() {
item1.pos = 2;
item2.pos = 1;
}

});
ul li {
-webkit-transition: all 1.5s ease-in-out;
-moz-transition: all 1.5s ease-in-out;
transition: all 1.5s ease-in-out;
}

.pos1 {
padding-left: 1px;
}
.pos2 {
padding-left: 20px;
}
.pos3 {
padding-left: 30px;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<body ng-app="StackApp">
<div ng-controller="MainCtrl">
<h1>{{ title }}</h1>
<button ng-click="sort()">Sort</button>
<ul>
<li ng-repeat="item in items" ng-class="'pos' + item.pos">{{ item.title }}</li>
</ul>
</div>
</body>

关于javascript - Angular 2 排序列表动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39712161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com