【问题标题】:Emberjs - how to access router in RC1Emberjs - 如何在 RC1 中访问路由器
【发布时间】:2013-03-08 19:45:37
【问题描述】:

在 emberjs pre2 中,我们可以从任何地方访问路由器,例如

App.get('router')

谁能建议 emberjs rc1 的类似代码是什么?

谢谢

【问题讨论】:

  • 您的用例是什么?我相信路由器被隔离是有原因的。如果您只想转换到另一条路线,您可以在控制器中执行类似this.get('target').transitionTo('other.route') 的操作,而在路线中您只需执行this.transitionTo('other.route')

标签: ember.js ember-router


【解决方案1】:

谁能建议 emberjs rc1 的类似代码是什么?

Emberjs rc1 不会以这种方式暴露路由器。

作为替代方案,您应该通过本地引用访问路由器。

不仅仅是路由器,过去可以通过全局常量访问的几乎所有内容现在都被隐藏了。这是因为使用全局常量来访问实例会破坏封装,虽然这对控制台来说很好,但应该在应用程序代码中避免使用。

【讨论】:

  • 在 ember.js 中使用 App.container(现在是 container)可能不是一个好主意...但是在与其他框架交互时使用它呢,遗留代码之类的,这样可以吗?
  • 假设可能有一个用例,但我还没有找到。似乎您想尽可能地隔离遗留代码。因此,如果从您的 ember 代码中访问诸如容器之类的私有方法是一个坏主意,那么在与另一个框架交互时访问它可能会更糟。
  • 但是如果我需要 Ember 应用程序对其他地方发生的事情做出反应怎么办?对于这个简单的用例,使用仪器 (stackoverflow.com/questions/14458287/…) 是否正确?
  • 我认为这取决于。你能说得具体点吗?
  • 例如,在我的例子中,我需要让 Ember.js 通过 WebView 对从 Android 应用程序调用的代码做出反应。因此,在 JavaScript 世界和 Java 世界之间有一个公共接口是必要的。该接口可能是一个封装对象,但它需要能够让 Ember.js 路由器做出反应以更改应用程序状态。这种用例在 Ember 中没有很好地定义。例如,AngularJS 通过提供服务(可能是我的接口)和依赖注入似乎在这方面做得更好。
猜你喜欢
  • 2013-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-18
  • 2023-03-24
  • 2016-09-09
  • 1970-01-01
  • 2020-01-01
相关资源
最近更新 更多