gpt4 book ai didi

angularjs - ngAnimate with Angular 1.4 + TypeScript 在页面加载期间不工作

转载 作者:搜寻专家 更新时间:2023-10-30 21:42:59 24 4
gpt4 key购买 nike

长话短说

使用 ES5 ( ES5 Example ) 时,开始时 View 淡入

使用 Typescript 导入时 View 不会淡入 (Typescript and ES6 Import Example)


我目前正在试验 Typescript、ES6 模块以及如何集成所有这些技术。在大多数情况下,一切正常。但是,我想用 ngAnimate 为 ui-view 设置动画,问题就来了。不知何故,如果我使用 ES6 模块及其 import 语句,似乎我的依赖项是延迟加载的,因此 ngAnimate 将不会在初始页面加载期间工作。页面加载后,动画效果很好,例如如果用户单击链接,则动画进出 View 。我希望看到的是 ui-view 在开始时淡入。

我设置了两个 Plunker 来演示普通旧 ES5 应用程序和 Typescript 应用程序的行为,后者使用 SystemJS 和 import 语句加载其依赖项。

Here是 ES5 的例子。如果你运行这个 Plunker,你会注意到 View 在开始时是如何淡入的。我所做的只是通过 index.html 中的脚本标记包含文件。动画是通过纯 CSS 完成的:

ui-view.ng-enter {
animation: fadeIn .5s ease both;
animation-delay: .3s;
}

ui-view.ng-leave {
animation: fadeOut .5s ease both;
}

Here是 typescript 的例子。您会希望看到不同之处,即 View 不会淡入,即使它使用相同的动画机制。这里唯一的区别是我使用的是 Typescript(应该不是问题所在)和通过 import 导入的 ES6 模块。不知何故,如果我正在使用 import ngAnimate 似乎没有完全加载,或者在页面加载时可能根本没有加载。也许它是懒加载的?

我真的很想让这个堆栈正常工作,因为它更加有趣和现代。有什么想法吗?

最佳答案

经过一些调查和一位 Angular 团队成员的帮助,我发现 ngAnimate 默认禁用前两个摘要的所有加载动画。这意味着如果它检测到正在下载任何远程 Assets ,那么它会一直等待直到它们准备就绪。当您使用 Typescript/ES6 模块时,情况就是这样。您可以解决这种情况并保证所有动画在 Bootstrap 上运行,即使正在下载远程 Assets ,方法是创建一个指令以使用 $animate.enabled(true); 启用动画。您可以将指令放在 bodyhtml 标记上。在上面的 Plunker 中,我已将指令添加到 body 标记中。这就是您所需要的:

<body allow-animations-on-load>
<ui-view></ui-view>
</body>
app.directive('allowAnimationsOnLoad', ['$animate', function($animate) {
$animate.enabled(true);
}]);

我也更新了对应的Plunker .如您所见,动画现在在 Bootstrap 中淡入。

关于angularjs - ngAnimate with Angular 1.4 + TypeScript 在页面加载期间不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34318564/

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