可以在一个Rails应用程序中拥有多个ember.js应用程序吗?
我正在开发一个Ember应用程序,需要与另一个带有Rails后端的ember应用程序合并(使用ember-rails gem)。 是否可以通过Rails后端连接两个完全独立的ember应用程序? 会有一些共享资源(通过Rails)但是其他应用程序是非常不同的,能够使用一个Rails应用程序为它们提供服务而不是为每个Ember应用程序制作两个单独的Rails应用程序是理想的…
谢谢
绝对有可能。 有多种方法可以做到这一点。 我的建议是让你的Ember.js应用程序共享一个命名空间和实例。
下面是一个代码示例(归功于@brg)
MainRailsApp = Ember.Application.create(); RailsEngine = Ember.Namespace.create(); RailsEngine2 = Ember.Namespace.create();
基于此 , 可接受的方法如下
App = Ember.Namespace.create({name: "App" }); Main = App.MainApp = Ember.Application.extend(); Main.create();
两者都有效,您可以根据特定应用程序的需求和工作流程来决定。
是的,完全有可能。
每个应用程序都需要一个Rails路由。 例如/ app1和/ app2
我有一个单独的javascript清单文件用于我的ember应用程序和我的Rails应用程序,但我不明白为什么你不能将两个ember应用程序组合到application.js清单文件中,如果你愿意的话。
您可以按如下方式实例化您的Ember应用程序:
App = Ember.Application.create({ rootElement: '#PUT_YOUR_ROOT_DOM_ELEMENT_HERE', Resolver: Ember.DefaultResolver.extend({ resolveTemplate: function(parsedName) { parsedName.fullNameWithoutType = "PUT_THE_RELATIVE_RAILS_URL_FOR_YOR_EMBER_APP_HERE/" + parsedName.fullNameWithoutType; return this._super(parsedName); } }) });
余烬的默认行为是附加到DOM的底部,您可以指定如上所示的rootElement。如果您重新使用Rails应用程序中的页眉或页脚,则非常有用。 上面的解决方案显示了如何为ember app指定Rails url,以便Ember url与它相关。
我从这里得到了这个解决方案: Ember-Rails和命名空间模板
更新:
您还应该在路由器中指定相对Rails URL
App.Router.reopen({ rootURL: '/PUT_THE_RELATIVE_RAILS_URL_FOR_YOR_EMBER_APP_HERE' });
- Ember-data,hasMany关系,加载子集合,嵌套路由
- 将base64图像转换为Carrierwave的StringIO
- Rails:不是ember,不是JS响应,而是介于两者之间
- 使用qunit测试emberjs / rails / devise应用程序时“无法validationCSRF令牌真实性”
- 具有嵌入式ID和侧载的Ember-Data和Active Model Serializer的has_many配置
- filter paginate将参数传递给异步ember数据关系请求
- 在Ember视图中获得结果
- Ember模型仅加载最后一条记录
- CORS – 不允许JSONP的跨域AJAX,允许在服务器上使用Origin