$ locationChangeStart,$ routeChangeStart和$ stateChangeStart之间的区别

men*_*h84 23 angularjs

我不知道什么是这三个不同,与其相应的$locationChangeSuccess,$routeChangeSuccess$stateChangeSuccess.

jac*_*per 38

$ locationChangeStart:$location只要URL发生变化,它就会 使用提供者并进行广播.位置更多地指特定URL的路径.它更像是纯JavaScript,您可以更改为应用程序中的任何路径,如果它在您的应用程序中定义为路由或状态,则无关紧要.

$ routeChangeStart: 这使用$route提供者,它是相同的,broadcasts当路由改变时(默认的Angular路由器使用ngRoute).这用于在控制器和视图之间建立链接.

$ stateChangeStart: 当状态发生变化时会发生这种情况,并在转换开始时进行广播.它由ui-router使用,它提供了routeprovider的不同(更高级)实现.States允许您映射和访问有关不同状态的不同信息,您可以轻松地通过状态在状态之间传递信息$stateParams.

它们非常相似,实际上它们具有相同的名称,但主要区别取决于应用程序使用的路由.如果您使用角度路由器然后坚持路由,但是,如果您使用ui-router,请坚持使用状态.这是我可以给你的实用建议.


Phi*_*Lho 7

请注意,您可以在不更改状态的情况下更改位置(即URL已更改但您仍处于相同状态).

因此,$locationChangeStart即使您使用ui-router,也可能希望收听$stateParam,例如,如果更改可能会导致丢失更改.