我想知道最佳实践是什么...
我不确定是否有任何一种连接外部代码的最佳实践。
通过 WebView 的 Android 应用程序......在这种情况下,在 JavaScript 世界和 Java 世界之间有一个公共接口是必要的。该接口可能是一个封装对象,但它需要能够使 Ember.js 路由器做出反应以更改应用程序状态
说得通。曾经可以为此目的使用控制器单例。像任何其他控制器一样,它将能够访问路由器。它还可能连接到其他控制器以修改它们的状态。
App.ApplicationRoute = Ember.Route.extend({
setupController: function() {
bridge = this.controllerFor('bridge');
// This "works" but uses a global constant
// Dependency Injection would be better, see below...
ImaginaryJavaLibrary.sendStateChangesTo(bridge);
}
})
App.BridgeController = Ember.Controller.extend({
eventOne: function(data) {
//react to state change, maybe call router.
}
})
通过提供服务(可能是我的接口)和依赖注入,AngularJS 似乎在这方面做得更好。但是 Ember.js 提供了哪些机制来构建 App 和外部世界之间的外部接口
服务看起来很酷。FWIW 我认为也许 AngularJS 在记录依赖注入方面做得更好,但可以肯定它也是 ember 的核心部分。查看这篇文章,了解如何将对象(如您的界面)注入 ember 应用程序。
http://mcdowall.info/posts/ember-application-initializers/
http://emberjs.com/api/classes/Ember.Application.html#method_register
另请查看描述如何与 Pusher 集成的这篇文章 - 我认为这非常接近您想要做的事情:
http://livsey.org/blog/2013/02/10/integrating-pusher-with-ember/
FWIW 这里是我们讨论过的其他一些方法的链接: