在新的Ember.Router
与Ember 1.0-RC2船,是否有可能在运行时添加路线?Ember-Router:如何在运行时在Ember 1.0-rc2中添加路由?
5
A
回答
4
目前没有支持的方法。该App.Router.map
呼叫用此代码行235-247处理:https://github.com/emberjs/ember.js/blob/master/packages/ember-routing/lib/system/router.js
Ember.Router.reopenClass({
map: function(callback) {
var router = this.router = new Router();
var dsl = Ember.RouterDSL.map(function() {
this.resource('application', { path: "/" }, function() {
callback.call(this);
})
});
router.map(dsl.generate());
return router;
}
的地图被覆盖每次调用Router.map
的回调上一次调用Router.map
没有持续的时间。
编辑 是好还是坏,我有一个拉请求改变行为以允许多次调用App.Router.map
。我们将看到会发生什么。你可以在这里https://github.com/emberjs/ember.js/pull/2485
遵循另一个编辑
我写了一个要点做在用户态就是我拉的要求做。这会让你在运行时映射路由。只要您的来电与我定义
https://gist.github.com/grep-awesome/5406461
更改答案编辑
由于这种拉请求的方法添加此代码,则更换App.Router.map
,你现在可以调用map
多次。 https://github.com/emberjs/ember.js/pull/2892
1
我看到wmarbut的答案没有被接受,但它是一个很好的(对我来说)。看来他的补丁正在进入Ember版本,但在此之前,这是一些使用补丁的代码。 (不要接受我的回答,我只是很高兴能够找到此答案。)我打算将它用作让内容驱动导航的解决方案的一部分。好问题,user1517325和谢谢,wmarbut!
// was an all-in-one router map as Ember likes it
// App.Router.map(function() {
// this.resource("foods", function(){
// this.route("index", {path: "/"});
// });
// this.route("fourOhFour", { path: "*:"});
// });
//wmarbut's workaround until his patch is applied
App.map_routes = [];
App.MapRoutes = function(routes) {
App.map_routes.push(routes);
return App.Router.map(function() {
var route_lamda, _i, _len, _ref;
_ref = App.map_routes;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
route_lamda = _ref[_i];
route_lamda.call(this);
}
return true;
});
};
//partial mapping
App.MapRoutes(function() {
this.resource("foods", function(){
});
});
//some more mapping
App.MapRoutes(function() {
this.resource("foods", function(){
this.route("index", {path: "/"});
});
});
//even more mapping
App.MapRoutes(function() {
this.route("fourOhFour", { path: "*:"});
});
1
在最新发布的ember.js RC7它被添加功能到Router.map
允许它没有地图被覆盖多次调用。这将允许在运行时添加路由。
希望它有帮助。
相关问题
- 1. 在运行期间添加OData路由
- 2. 添加路由到Ember插件
- 3. 如何在运行时添加新列?
- 4. 如何添加代码在运行时
- 5. 如何在运行时添加TextView?
- 6. 如何在运行时添加UIButton
- 7. 如何在异步路由加载时添加微调器?
- 8. 如何获取Ember中的子路由的路由参数
- 9. 在新的Ember rc1路由器中挂接“根”路由
- 10. ASP.NET路由 - 仅在数字时才添加路由?
- 11. 在运行时向表中添加行
- 12. 在运行时添加PictureBoxes
- 13. 在运行时添加QRadioButtons
- 14. 如何在运行时在gridview中的Label中添加值?
- 15. 快速中间件在添加后在每个路由器上运行
- 16. 在Java中运行时为本机库添加新路径
- 17. 如何在ember路由器中使用非id动态段?
- 18. 在Ember pre4的路由器中,如何从另一条路由中触发路由事件?
- 19. 如何在运行时在spring中为bean添加属性
- 20. 如何在VIsual C++ Express 2010项目中添加运行时DLL的路径?
- 21. Ember - 在DOM上运行JS加载
- 22. 如何在UI路由器中添加后端管理布局的路由
- 23. 在IIS中添加默认路由
- 24. 如何在运行时从XNA中的路径加载纹理?
- 25. 如何在声明后运行由DOM添加的指令?
- 26. 如何添加异常路由:任何在CodeIgniter中?
- 27. 在Zend Framework中向路由器添加路由
- 28. 在javascript中动态添加路由与铁路由器
- 29. 如何在使用控制器时为路由添加名称,而不是在Laravel4中路由到的功能?
- 30. 如何在运行时使用yaml路由描述在Symfony2中获取路由名称?
查看我刚刚添加的编辑,它提供了一个解决方案,可以投入工作 – wmarbut 2013-04-17 18:14:20