Javascript EmberJS管线重用:编辑并创建新模型
我正在开发一个EmberJS应用程序,我开始重新思考我的路由器映射。 我的应用程序处理Javascript EmberJS管线重用:编辑并创建新模型,javascript,ember.js,routes,Javascript,Ember.js,Routes,我正在开发一个EmberJS应用程序,我开始重新思考我的路由器映射。 我的应用程序处理订单。每个订单都包含其详细信息、成本和维度。 我希望每一页都是可寻址的。我开始制定这些路线: App.Router.map(function() { this.route('index', {path : '/'}); this.route('dashboard'); this.route('reports'); this.resource('orders', function(
订单
。每个订单都包含其详细信息
、成本
和维度
。
我希望每一页都是可寻址的。我开始制定这些路线:
App.Router.map(function() {
this.route('index', {path : '/'});
this.route('dashboard');
this.route('reports');
this.resource('orders', function() {
this.route('index', {path : '/'});
this.resource('order', { path: '/:order_id' }, function(){
this.route('index', {path : '/'});
this.route('costs');
this.route('dimensions');
this.resource('work', { path: '/works/:work_id' }, function(){
this.route('index', {path : '/'});
});
});
});
});
这真的很有效。
我有一些URL,例如:/orders
用于订单列表,/orders/1
用于一般订单详细信息,/orders/1/costs
和/orders/dimensions
分别用于订单成本和维度
虽然它工作正常,但我还做了一些额外的工作,因为每个嵌套的order
路由都有一个不同的控制器。我所做的是这个.modelFor('order')每个嵌套管线的模型挂钩中的代码>。尽管如此,有时我觉得我需要一个在路线之间共享的东西,因为它们都使用相同的模型(顺序),它们只处理不同的部分
当我想添加“创建订单”功能时,问题开始出现。
我希望URL/orders/new
创建一个新订单并开始编辑它。类似地,/orders/new/dimensions
仍然适用。换句话说,唯一改变的是订单路径:id
参数变为静态新路径。我以前开发的模板和控制器可以重用,但我找不到任何方法来做到这一点
也许是因为“订单”是一种资源,而不是一条简单的路线。
您将如何解决此问题?您能做如下操作:
App.Router.map(function() {
this.resource('orders', function() {
this.route('new', {path : '/orders/new'});
...
});
});
App.OrdersNewRoute = Ember.Route.extend({
redirect: function() {
this.transitionTo('order', App.Order.createRecord());
}
})
我猜您会创建一个不嵌套在您定义的订单资源下的路由,然后将路径设置为/order/new。。。但我不确定,所以我会让其他有经验的ember用户正确回答::-)