如何在ember.js 1.6.x中创建无路由子状态

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

Poo*_*avi 1

您可以在另一个 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)