$ state.go(app.location)和$ location.path(" app / location")有什么区别?

时间:2014-05-04 09:50:31

标签: angularjs ionic-framework angular-ui-router

我最近开始使用离子框架,它有角度js。要在屏幕之间导航,我使用$ location.path并且它工作得很好。但是,在我下载的一个例子中,我看到$ state.go被用来重定向到某个页面。我想知道两者之间的区别。

3 个答案:

答案 0 :(得分:50)

$ location服务在angular.js框架上开箱即用,允许您管理位置对象(类似于纯JavaScript中的位置对象)。 $ state服务是ui-router模块的一部分,允许您在整个状态机视图管理中管理高级模式的路由。

如果您使用ui-router,您应该更喜欢使用$ state服务来管理状态/路由,因为状态抽象了路由的概念,您可以在不改变状态的情况下更改物理路由。

除此之外,如果你在hashbang mode中运行,可能会遇到更多问题,特别是在你的html链接中。在这种情况下,最好使用ui-sref而不是ng-href(或只是href)。 在我看来,你应该总是考虑国家而不是道路。如果你知道自己在做什么,显然你可以混合服务

答案 1 :(得分:2)

感谢@wilver回答。 当我深入挖掘角度并学习构建项目的不同方法时,我更好地理解了这些状态和路径。是的,我发现状态比路径好得多。

$ state.go,PaymentViewModel附带 - IDataService提供者,将根据州名进行工作。先前内置(现在需要包括$stateProvider)路由器和状态之间的主要区别在于,#34;状态可以具有嵌套状态但是使用路由器它是不可能的。我突然意识到整个Ionic framework都是可能的,因为这个概念 - 我在基于ui-router和基于ui-router的离子应用程序的角度网络应用程序上工作时能够理解这一点。

Ionic使用app作为基本状态,所有其他屏幕定义为其子状态。这就是您在app.js ngRoute内看到ngRouteapp.screen1的原因。

所以当你有路线时,你使用app.screen2和 如果您有州,则使用$stateProvider

答案 2 :(得分:0)

我使用离子和我观察到的差异之一但尚未弄清楚为什么$location.path$state.go慢得多