在控制器或自己的路由中使用1.0.0语义命令

时间:2013-10-13 20:08:39

标签: ember.js

对于具有主详细信息视图和一对多关系的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或者是否有新的余烬方式?

欢迎任何提示。

2 个答案:

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