gpt4 book ai didi

javascript - Angularjs - 如何从 $routeChangeSuccess 访问范围?

转载 作者:行者123 更新时间:2023-11-29 22:03:17 26 4
gpt4 key购买 nike

更新

感谢大家的想法和评论。我认为考虑到我的项目需求,这里最好的方法实际上是使用一个不同的框架,它可以让我更好地控制我需要添加的所有自定义动画。不幸的是,开箱即用,我认为我无法从 Angular 获得我需要的 Hook ,而我可以在 Backbone.Marionette 中获得。此外,我的其他团队成员以前都使用过 Marionette,所以我认为它更有意义。

为了更好地解释一下,因为我的问题实际上并没有解决我的主要问题,我需要在页面上的各种元素呈现时和离开之前对它们进行复杂的动画处理。据我所知,我猜这对 Angular 来说是可能的,但不是开箱即用的。不幸的是,我认为我不能再花时间让它发挥作用了。

此外,为了尝试其他动画技术,我更新了 fiddle 以使用 addClass 和 removeClass 动画。但我似乎无法像我期望的那样让他们开火。 removeClass 动画始终运行,但不是 addClass 动画。在 page1 和 page2 之间切换以触发 addClass 和 removeClass 指令。

http://jsfiddle.net/jgS4W/2/

我觉得很奇怪。

更新结束

-

好吧,我已经做了 2 天了,但没有成功...我想做的是在 ng-view 容器中呈现时向 View 添加自定义 JS 动画。

我已经接近几次,但每次都达不到。

我希望我可以使用 $routeChangeSuccess 处理程序来访问当前 View 的范围并发出“view.enter”事件,但这不起作用。处理程序中的“当前”参数永远无法访问其 View 的范围。

我创建了一个 jsfiddle 来解释我在说什么: http://jsfiddle.net/jgS4W/

我认为以下方法可行...

$rootScope.$on('routeChangeSuccess', function (event, current, previous) {
current.scope.$emit('view.enter');
]);

但是 'current.scope' 总是未定义的。

我试过 Hook 到 ng-view 上的动画事件,但它们与 ng-view 的范围相关,而不是正在呈现的 View 的范围...

我在这里不知所措。如何在呈现 View 时发出事件???

谢谢!

最佳答案

您没有获得作用域的原因是它尚不存在。我已经更新了 fiddle来证明这一点。

根据您的需要,您可以采用不同的方法并使用父 Controller 和/或维护一些状态值的共享服务实例,您可以使用它们来制作动画。

似乎 stackoverflow 在链接到 fiddle 时强制执行了一行代码,所以就这样

// this is a single line of code

关于javascript - Angularjs - 如何从 $routeChangeSuccess 访问范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22366289/

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