我最近开始使用离子框架,它有角度js。要在屏幕之间导航,我使用$ location.path并且它工作得很好。但是,在我下载的一个例子中,我看到$ state.go被用来重定向到某个页面。我想知道两者之间的区别。
答案 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
内看到ngRoute
,app.screen1
的原因。
所以当你有路线时,你使用app.screen2
和
如果您有州,则使用$stateProvider
答案 2 :(得分:0)
我使用离子和我观察到的差异之一但尚未弄清楚为什么$location.path
比$state.go
慢得多