对于具有主详细信息视图和一对多关系的ember CRUD应用程序,我有一个小的测试项目(尚未准备好)。 (https://github.com/erhard/emb_boot.git) 就像在Rails中一样,我在控制器中放置了所有方法,如新编辑或删除,我为输入字段启动了一个模态屏幕,并将数据存储在一个全局数据对象中,我希望稍后使用put post或者与服务器同步删除。 所以我在控制器中有语义方法,对我来说很自然。
现在我在ember doc中看到了类似于新的或编辑的额外路线。 例如
@.resource order, ->
@.route new
@.route edit
等等也背后有重要的逻辑(http://emberjs.com/guides/routing/defining-your-routes/)
现在我不确定与ember走哪条路。什么是最好的或推荐的Rails Way或者是否有新的余烬方式?
欢迎任何提示。
答案 0 :(得分:1)
首先,我建议您开始分离您的Rails概念 烬。 MVC在Ember和Rails中意味着不同的东西,如Rails 开发者我也试图寻找类比,有时可以得到 令人困惑(我正在为Rails开发一个简单的社区指南 Ember https://github.com/abuiles/ember-rails-style-guide)
在Ember中,保留这些“语义方法”的方法是使用Routes完成的。
在你的情况下,你有OrdersIndexRoute,OrdersNewRoute,OrdersEditRoute (想想这些中的每一个都是Rails中的“行动”)
OrdersIndexRoute = index操作,您需要设置所有 订单型号列出。它看起来像
App.OrdersIndexRoute = Ember.Route.Extend({
model: function(){
return Order.all; // If you are using ember-data this would be different, just supposing Orders.all returns all your orders models.
}
});
OrdersNewRoute =新操作,您需要设置new
对象
它将绑定到表单,然后提交给您的服务器。
App.OrdersNewRoute = Ember.Route.Extend({
model: function(params){
return Order.new() // returns a new instance of your model
},
actions: {
// this means that you would have something in your template like <button {{action this}}>...
save: function(model){
model.save()
}
}
});
OrdersEditRoute =编辑操作,这里的model
就是那个
你想编辑。
App.OrdersEditRoute = Ember.Route.Extend({
model: function(params){
return Order.find(params.id)
},
actions: {
save: function(model){
model.save()
}
}
});
当你有这种疑问时,可以随意跳进IRC中的#emberjs,那里有很多聪明而有帮助的傻瓜,愿意在需要时帮你。
答案 1 :(得分:0)
在ember路由组中使用单个资源。每条路线都有自己的控制器。这有助于避免使用显示路径控制器逻辑混乱编辑路径控制器,反之亦然。
我相信你已经读过这篇文章了,但对未来的人来说,http://emberjs.com/guides/routing/defining-your-routes/。