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

时间:2014-08-09 19:08:37

标签: javascript ember.js ember-data url-routing

我想在我现有的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

3 个答案:

答案 0 :(得分:1)

这可能就是你要找的东西:

https://github.com/tildeio/conductor.js

答案 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;