33

根据我所读到的内容(如果我弄错了,请纠正我),处理何时应该保存模型以及下一步转换到哪里的逻辑应该在路由器中。

如果是这样的话,我遇到了一个问题:我不知道如何从 route 访问模型

这是我的控制器(在我按下提交后控制台会记录“已创建”):

App.ScoutsNewController = Ember.ObjectController.extend
  submit: ->
    model = @get('model')
    model.on 'didCreate', ->
      console.log 'CREATED' # I want to  redirect to the index after creation
    model.save()

我应该把这个逻辑移到路由中,对吧?让我们试试:

App.ScoutsNewRoute = Ember.Route.extend
  model: ->
    App.Scout.createRecord()

  events:
    submit: ->
      # Based on what I've read, the right place to put the code you see in the controller is here. How do I get access to the model?
      # I have tried @get('model'), @get('content')

注意:我知道提交事件从视图冒泡到控制器,最后是路由,停在其中任何一个定义了“提交”的地方。因此,由于我希望路由处理它,因此我删除了控制器。我能够看到console.log路线中的任何事情,我只需要能够到达模型实例。

我在用着Ember v1.0.0-rc.5-7-g610589a

谢谢!

4

5 回答 5

78

两种选择:this.currentModelthis.modelFor(routeName)

更新

我就此事与 Señor Alex Matchneer 进行了交谈。短期内没有this.currentModel离开的计划,但他考虑this.modelFor(this.routeName)使用公共 API。

于 2013-06-15T15:21:54.460 回答
2

应该工作的是

this.controllerFor('ScoutsNew').get('content')
于 2013-06-15T14:49:43.717 回答
2

this.currentModel不是这里描述的真正认可的方式

但在我的 Ember (1.11) 版本中this.modelFor(this.routeName)返回 null,所以这对我有用

this.controllerFor(this.routeName).get('model')
于 2016-02-05T07:11:08.197 回答
0

您也可以使用this.controller.get('model');,但有计划移除控制器。

直到我们可以使用上面的代码来检索当前模型的路由

于 2016-05-03T16:03:10.483 回答
0

使用 Ember 3.0.0,这是一种适用于我的文档化方式:

const model = this.controller.model;
于 2018-03-20T00:27:46.450 回答