Jes*_*ord 5 javascript url-routing ember.js ember-data
我想在我现有的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
向Ember.StateManager发送动作:goToState是强制性的吗?
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
您可以在另一个 Ember 应用程序中运行多个嵌入式隔离的 Ember 应用程序。
嵌入式 Ember 应用程序可以像任何其他应用程序一样操纵 URL 状态,或者您可以将其配置为具有 路由状态但不与 URL 交互。
查看嵌入应用程序文档。
摘抄:
App = Ember.Application.create({
rootElement: '#app'
});
App.Router = Ember.Router.extend({
location: 'none' // To disable manipulating URL
});
Run Code Online (Sandbox Code Playgroud)
您还可以在应用程序之间共享代码。例如共享 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;
Run Code Online (Sandbox Code Playgroud)