当前位置: 首页 > 面试题库 >

在ng-repeat中使用'track by $ index'时,ng-animate动画错误的项目

章彬郁
2023-03-14
问题内容

我正在尝试创建一个应用程序,用户可以选择不同类型的块并将它们堆叠在一起以创建唯一的模板。

由于我希望用户能够多次将相同的块添加到模板中,因此我必须使用“ track by $ index”来完成此操作:

<li ng-repeat="chosen in chosenlist track by $index">

但是,当我尝试使用ng-
animate添加动画时,用于删除块的动画是在模板中的最后一块而不是remove块上进行动画处理。我将代码放在jsfiddle的http://jsfiddle.net/FC9c7/6/中。

尝试通过选择布局1、2或3添加新块。单击“删除块”后,您将看到问题。


问题答案:

我认为这是正在发生的事情:由于您正在按项目的索引跟踪项目,因此每次您从列表中删除一项时,最后一个元素的索引都会发生什么变化,从而使Angular认为它是被删除的项目。当您在索引的元素旁边打印索引时,这变得很明显。看看这个修改过的jsFiddle。

一种解决方案是创建具有唯一ID的新元素,然后按这些ID进行跟踪:

Java脚本

$scope.add_layout = function(new_layout) {
  new_layout = angular.copy(new_layout);
  new_layout.id = new Date().getUTCMilliseconds();
  $scope.chosenlist.push(new_layout);
};

的HTML

<li ng-repeat="chosen in chosenlist track by chosen.id" ng-animate="'animate'">

jsFiddle 在这里。

但是,由于它创建了新元素,因此您将无法使其与原始对象保持同步,并且我不知道您是否可以接受。

我将尝试检查Angular 1.2 RC1中的新动画系统是否解决了此特定问题,如果我发现有什么问题,将更新此答案。但我不确定这样做。:(



 类似资料:
  • 问题内容: 我想问你是否可以帮我这个忙。 我在这里用我的问题创建了一个jsfiddle 。我需要使用ng-model =“ my _ {{$ index}}”方式在ng-repeater中动态生成一些带有ng-model的输入。 在jsfiddle中,您可以看到一切正常,直到我尝试动态生成它为止。 HTML将是: 还有javascript … 你能给我个主意吗? 非常感谢。 问题答案: 它能解决您

  • 问题内容: 我正在使用像这样的过滤器渲染对象列表: 我尝试对列表的排序进行ng动画处理的尝试令人沮丧,因此不值得分享。我在这里看到了Yearofmoo示例应用程序。 不幸的是,这个演示并不是我想要实现的。在定义更改后,当给定列表项以新顺序放置时,我需要设置其X位置的动画。我试图通过css过渡和绝对定位来实现这一点,但是似乎在使动画成为真正的挑战时重新创建了列表项。 (使用或不使用 )是否可能? 您

  • 问题内容: 我创建了一个表,用户可以在其中增加和减少该值。见小提琴 我想在模型更新时做动画,即表格列的背景颜色从红色更改为白色,以防用户更改值。 因此,当您单击任何垂直列中的向上箭头或向下箭头时,该表列的背景颜色将从红色变为白色。 我无法解决这个问题。关于如何实现这一目标的任何指针? 问题答案: 您的代码中有几个问题: 切勿 在控制器代码中进行DOM操作:这是您应避免的事情。只有在指令中,您才能使

  • 问题内容: 我已经创建了jsfiddle http://jsfiddle.net/99vtukjk/ 在单击左或右文本时,当前用于隐藏的动画是向上的,我们如何才能将其更改为向左滑动动画,例如向左菜单栏滑动并淡入淡出? CSS: 角度模块 问题答案: 您可以设置在 和上 这是一个工作的小提琴 可以帮助您制作精美动画的一件事是使用 Animate.css animate.css是一堆很棒,有趣且跨浏览

  • 问题内容: 我正在开发一个页面,我需要在其中显示一些框(使用),其中包含频道信息以及显示位置(城市)。 我面临的问题是当我重复第二遍时: 这应该获得第一个ng-repeat的$ index值,并使用显示频道的位置创建一个新数组。它确实做到了。但是,当我使用此数组应用第二个ng- repeat时,它无法正常工作。 说我的html看起来像这样(PS:我需要使用索引值而不是因为我将这些框放到列中) JS

  • 问题内容: “活动”类的CSS来自引导程序。 因此,切换作品几乎是我想要的。我希望它类似于导航链接中的活动状态,但在我的示例中,它处理图像,因此需要担心url字符串等。 我尝试模拟此示例,但没有用(我尝试了相同的图像逻辑):ng-class突出显示基于ng- repeat的活动菜单项,如果有人能指出我正确的方向,我将不胜感激。:D 问题答案: 在您遇到的情况下,我要做的是在ng-repeat的父范