0

我有一个小型测试项目(尚未准备好),用于具有主详细信息视图和一对多关系的 ember CRUD 应用程序。(https://github.com/erhard/emb_boot.git)就像在 Rails 中一样,我将所有方法(如新编辑或删除)放在控制器中,从那里启动输入字段的模式屏幕并将数据存储在全局我想稍后通过 put post 或 delete 与服务器同步的数据对象。所以我在控制器中有语义方法,对我来说很自然。

现在我在 ember 文档中看到了一些新的或编辑的额外路线。比如像

@.resource order, ->
    @.route new
    @.route edit 

等等还有它背后的沉重逻辑(http://emberjs.com/guides/routing/defining-your-routes/

现在我不确定使用 ember 的方式。什么是最好的或推荐的 Rails 方式,还是有新的 ember 方式?

欢迎任何提示。

4

2 回答 2

1

首先,我建议您开始将 Rails 概念与 Ember 分开。MVC 在 Ember 和 Rails 中意味着不同的东西,作为 Rails 开发人员,我也尝试寻找类比,有时会感到困惑(我正在为 Rails 开发人员编写一个简单的社区指南到 Ember https://github.com/abuiles/ ember-rails-style-guide )

在 Ember 中,保留这些“语义方法”的方法是使用 Routes 完成的。

在您的情况下,您将拥有 OrdersIndexRoute、OrdersNewRoute、OrdersEditRoute(将这些中的每一个视为 Rails 中的“操作”),其中

OrdersIndexRoute = 索引操作,您需要设置要列出的所有订单模型。它看起来像

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,那里有很多聪明而乐于助人的傻瓜,愿意在需要时为您提供帮助。

于 2013-10-14T04:03:33.967 回答
0

在 ember 中,路由组使用单个资源。不过,每条路线都有自己的控制器。这有助于避免编辑路由控制器与显示路由控制器逻辑混乱,反之亦然。

我相信你已经读过这篇文章,但对于未来来到这里的人来说,http ://emberjs.com/guides/routing/defining-your-routes/ 。

于 2013-10-14T04:01:55.453 回答