5

ユーザー名または ID を受け入れることができるルートから ember-data User モデルをロードしようとしています。

RESTAdapter の find メソッドを変更して、JSON 応答の ID を にdidFindRecord渡しましたが、ビューには何も渡されません。Ember はまだユーザー名をモデルの ID として使用しようとしているようです。

私のルーターは次のようになります。

App.Router = Em.Router.extend({
  location: 'history'
, root: Em.Route.extend({
    user: Em.Route.extend({
      route: '/users/:slug'
    , connectOutlets: function(router, context) {
        router.get('applicationController').connectOutlet('user', context)
      }

    , serialize: function(router, context) {
        return { slug: context.get('username') || context.get('id') }
      }

    , deserialize: function(router, params) {
        return App.User.find(params.slug)
      }
    })
  })
})

そして、私の find メソッドは次のようになります。

var CustomAdapter = DS.RESTAdapter.extend({
  find: function(store, type, id) {
    var root = this.rootForType(type)

    this.ajax(this.buildURL(root, id), 'GET', {
      success: function(json) {
        this.didFindRecord(store, type, json, json[root].id)
      }
    })
  }
})

App.store = DS.Store.create({
  revision: 6
, adapter: CustomAdapter.create({ namespace: 'api' })
})
4

1 に答える 1

0

この問題を確認する必要があります: https://github.com/emberjs/data/issues/551

于 2013-03-17T19:06:36.533 に答える