【问题标题】:What is the difference between $state.go(app.location) and $location.path("app/location")?$state.go(app.location) 和 $location.path("app/location") 有什么区别?
【发布时间】:2014-05-04 09:50:30
【问题描述】:

我最近开始使用 ionic 框架,里面有 angular js。为了在屏幕之间导航,我使用了 $location.path 并且效果很好。但是,在我下载的一个示例中,我看到 $state.go 被用来重定向到某个页面。我想知道两者的区别。

【问题讨论】:

  • 但你不会告诉他这些功能是什么?或者提供一个网址?

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


【解决方案1】:

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

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

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

【讨论】:

  • OP,这有很多赞成票。如果您同意,那么请授予对以后查看此问题的其他人有所帮助的答案。
【解决方案2】:

感谢@wilver 回答。 随着我深入研究 Angular 并学习了构建项目的不同方法,我更好地理解了这些状态和路径。是的,我发现状态比路径好得多。

$state.go 附带 $stateProvider - ui-router 的提供程序,将基于州名称工作。以前内置的(现在你需要包含ngRoute)路由器和状态之间的主要区别是“状态可以有嵌套状态但使用路由器这是不可能的。我突然意识到整个Ionic framework是可能的,因为这个概念 -在开发基于 ngRoute 的 Angular Web 应用程序和基于 ui-router 的 ionic 应用程序时,我能够理解这一点。

Ionic 将应用程序作为基本状态,所有其他屏幕定义为其子状态。这就是为什么你会在 app.js 中的 $stateProvider 中看到 app.screen1app.screen2

所以当你有路线时,你可以使用$location.path("<routeUrl>") 和 当你有状态时,你使用$state.go("<stateName>")

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2015-11-22
      • 2018-07-01
      • 1970-01-01
      • 2020-08-10
      • 2021-03-21
      • 1970-01-01
      • 2013-04-17
      相关资源
      最近更新 更多