EmberJS路由复用:编辑并创建新模型
EmberJS Route reuse: edit and create new model
我正在开发一个EmberJS应用程序,我开始重新考虑我的路由器映射。我的应用程序处理orders
。每一阶包含details
、costs
和dimensions
。我希望每个页面都是可寻址的。我从定义这些路由开始开发:
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
路由有不同的控制器。我所做的是在每个嵌套路由的模型钩子中的this.modelFor('order');
。尽管如此,有时我觉得我需要在路由之间共享一些东西,因为它们都使用相同的模型(Order),它们只是在不同的部分上工作。
当我想添加"创建订单"功能时,问题开始出现。我希望URL /orders/new
创建一个新订单并开始编辑它。同样,/orders/new/dimensions
仍然适用。换句话说,唯一改变的是订单路由:id
参数到静态new
路径。我之前开发的模板和控制器可以重用,但我找不到任何方法。
可能因为"order"是一种资源,而不是一条简单的路线。你会如何解决这个问题?
你能不能这样做:
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());
}
})
相关文章:
- 显示模块模式在Knockout中设置模型的新实例
- Sequelize associations:set[Models]添加新模型,而不是关联现有模型
- 如何观察在 Sails .js 中添加到模型中的新记录
- 如果模型开始为空,如何处理ngRepeat模型中的新项
- 在获取后将新模型准备到集合中(不带比较器)
- 主干中的比较器在添加新模型时需要排序调用
- 如何在创建保存新模型时获取id
- 调用ko.applyBindings后,向Knockout视图模型添加新属性
- Emberjs操作模型不会初始化新模型
- 在knocket js中应用绑定后,向视图模型添加新属性
- Thinky.io 有很多没有保存新的模型实例
- 使用主干上的新数据更改模型的数据
- 在 View.event Backbone.js 中创建新模型
- 猫鼬数据不会保存模型的新实例
- 挖空选择框未绑定到初始模型值,而是绑定新值
- 主干.js:仅添加来自 JSON 集合获取的新模型
- 在backbone.js中,如何使用新的模型数据更新视图,同时在没有完整渲染的情况下保持排序顺序
- 在保存新的模型实例之后,在Ember.js中转换到路由之前,更新资源模型
- 如何使用Backbone在特定嵌套的对象数组中设置新的模型信息
- 用AngularJS的方式给MongoLab添加一个新的模型字段