我想在我现有的ember 1.6.x应用程序的每个页面上创建类似管理子应用程序的东西。它将拥有自己的状态机(路由器),允许它根据自己的状态加载不同的控制器/模板。我已经看到很多类似的讨论围绕着拥有多个状态机(路由器)或大量使用子路由,但没有任何真正的打击。
有没有一种明确的方法可以在同一页面上创建两个有效的应用程序?
子应用程序不需要实际拥有在url栏中解释的路由。当父应用程序更改路由/状态时,它也不需要保持状态。每次父应用程序更改为其他路由时,都可以重置它。我想避免的是在父应用程序的多个控制器中反复重复相同的代码。我还想避免污染应用程序或全局级别。
以下是我查看的讨论列表。我能找到的最接近的事情是有关ember流程的工作(尚未完成)。或者,我是否应该通过子应用程序的ember-states插件来创建一个新的状态机?
要明确我不是在找人为我编写代码。仅讨论如何使用目前可用的ember 1.6.x进行此操作。
http://discuss.emberjs.com/t/route-less-substates/2269
http://discuss.emberjs.com/t/is-there-a-reason-we-can-not-have-nested-routes/1845
Sending action to Ember.StateManager : is goToState mandatory?
https://github.com/emberjs/ember.js/issues/406
https://github.com/emberjs/ember.js/issues/4767
http://discuss.emberjs.com/t/concurrent-states-in-ember/5042
https://github.com/nathanhammond/ember-flows-generator
https://github.com/emberjs/ember.js/issues/406#issuecomment-3702356
答案 0 :(得分:1)
这可能就是你要找的东西:
答案 1 :(得分:1)
我想你可以使用query-params我没有完全得到你的用例但是请查看这个http://instructure.github.io/ic-tabs/query-params.html#/?country=2&food=2
答案 2 :(得分:1)
您可以在另一个Ember应用程序中运行多个嵌入式隔离Ember应用程序。
嵌入式Ember应用可以像处理任何其他应用一样处理网址状态,或者您可以将其配置为 路由状态但不与网址互动。
看看embedding applications documentation。
摘录:
App = Ember.Application.create({
rootElement: '#app'
});
App.Router = Ember.Router.extend({
location: 'none' // To disable manipulating URL
});
您还可以在应用之间共享代码。例如,共享Ember数据模型。
var MainApp = Ember.Application.create({});
var AdminApp = Ember.Application.create({rootElement: '#admin-container'});
AdminApp.Router = Ember.Router.extend({location: 'none'});
MainApp.User = DS.Model.extend({});
AdminApp.User = MainApp.User;