Ember: ルータからモデルにアクセスするにはどうすればいいですか? 質問する

Ember: ルータからモデルにアクセスするにはどうすればいいですか? 質問する

私が読んだ内容に基づくと (間違っていたら訂正してください)、モデルをいつ保存するか、次にどこに遷移するかを処理するロジックはルーター内にあるはずです。

もしそうだとしたら、ちょっとした問題に遭遇することになります。ルートからモデルにアクセスする方法がわかりません

これは私のコントローラーです (送信を押すとコンソールに「CREATED」と記録されます)。

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

ありがとう!

ベストアンサー1

2つのオプション:this.currentModelまたはthis.modelFor(routeName)

アップデート

this.currentModelこれについて、Alex Matchneer 氏と話をしました。すぐに廃止する予定はありませんが、彼はthis.modelFor(this.routeName)パブリック API を検討しています。

おすすめ記事