1

私はしばらくの間これをデバッグしようとしていました、そして私は問題が何であるかを理解したかもしれません、フィドルを使って何が起こっているのか説明させてください

http://fiddle.jshell.net/ivanvanderbyl/mfqEB/show/#/projects/1に移動すると、URLの動的セグメントがに置き換えられているnullことがわかります。1

私が収集できるものから、一度ルーティングした後、Ember RouterはURLを更新するための呼び出しを行い、動的セグメントをそれぞれのインスタンス化されたオブジェクト(この場合はApp.Project)から取得した値に置き換えます。

問題はApp.Project、この時点ではロードされていないためidです。null

これが私の側のバグなのか実装の失敗なのか、他の誰かがこれを見たことがありますか?

4

2 に答える 2

1

connectOutletsをprojects.indexからプロジェクトに直接移動することでうまくいくようです。でも理由は聞かないでください。

jsFiddle

Router: Ember.Router.extend(
  location: 'hash'
  enableLogging: true

  root: Ember.Route.extend(

    listProjects: Ember.Route.transitionTo("projects.index")
    showProject:  Ember.Route.transitionTo("projects.show")

    index: Ember.Route.extend(
      route: "/"
      redirectsTo: 'projects.index'
    )

    projects: Ember.Route.extend(
      route: '/projects'

      connectOutlets: ((router) ->
        router.get('applicationController').connectOutlet('projects', App.Project.find())
      )

      index: Ember.Route.extend(
        route: '/'
      )

      add: Ember.Route.extend(
        route: '/new'
      )

      show: Ember.Route.extend(
        route: '/:project_id'

        connectOutlets: (router, project) ->
          console.log project.get('name')

          # router.get('applicationController').connectOutlet('project', project)
      )
    )

  )
)
于 2012-07-11T14:31:39.980 に答える
0

したがって、多くの調査の結果、これに対する正しい解決策は、モデルに主キー属性を指定しないことです。この場合、プロジェクトモデルにID属性を指定するべきではありませんでした。EmberDataはこれを内部で処理します。

Githubでこれを指摘してくれたPeterWagenetに感謝します。

于 2012-07-18T03:53:16.480 に答える