1

このような例を実行しますが、まだページネーションを取得できません

これは私の store.js.coffee です

Eme.serializer = DS.RESTSerializer.create()

Eme.serializer.configure
  meta: 'meta'
  pagination: 'pagination'

Eme.CustomAdapter = DS.RESTAdapter.extend
  serializer: Eme.serializer
  namespace: "api/v1"

Eme.Store = DS.Store.extend
  revision: 13
  adapter: 'Eme.CustomAdapter'

これは私のコントローラーです

Eme.PluginsController = Em.ArrayController.extend
  content: []
  pagination: (-> 
    if this.get('model.isLoaded')
      console.log @get('model.type')
      console.log @get('store').typeMapFor(modelType).metadata

      modelType = @get('model.type')
      @get('store').typeMapFor(modelType).metadata.pagination
  ).property('model.isLoaded')

これは応答です

{
  "meta":{
    "pagination":{
      "total_count":16,
      "total_pages":2,
      "current_page":1
    }
  },
  "plugins":[{
    "id":"1",
    "name":"zhangsan",
  }]
}

これは私のログです:

Eme.Plugin

物体 {}

4

1 に答える 1

2

貼り付けた例では、modelType変数は定義される前にコンソールに出力されます。これが、ページネーション データが期待どおりに表示されない理由である可能性があります。

コードを少し変更したバージョンの jsbin を作成しましたが、ページネーション データが正しく出力されているようです。参照: http://jsbin.com/anIKAfO/2/edit

App = Ember.Application.create({});

App.IndexRoute = Ember.Route.extend({
  model: function(){
    return App.Plugin.find();
  }
});

App.IndexController = Ember.ArrayController.extend({
  pagination: function() {
    if (this.get('model.isLoaded')) {
      var store = this.get('store');
      modelType = this.get('model.type');
      console.log('modeltype: ', this.get('model.type'));
      var metadata = store.typeMapFor(modelType).metadata;
      console.log('metadata: ', metadata);
      return metadata.pagination;
    }
  }.property('model.isLoaded')
}); 

App.Store = DS.Store.extend({
  adapter: 'App.Adapter'
});

App.Plugin = DS.Model.extend({
  name: DS.attr('string')
});

App.serializer = DS.RESTSerializer.create();

App.serializer.configure({
  meta: 'meta',
  pagination: 'pagination'
});

App.Adapter = DS.RESTAdapter.extend({
  serializer: App.serializer,
  ajax: function(url, type, hash) {
    console.log('App.Adapter.ajax:', url, type, hash);
    json = App.RESTDATA[url];
    if (json) {
      console.log('App.Adapter.ajax: Found RESTDATA: ', json);
      return new Ember.RSVP.Promise(function(resolve, reject) {
        Ember.run(null, resolve, json);
      });
    } else {
      console.log('App.Adapter.ajax: No RESTDATA for url, calling API', url);
      return this._super(url, type, hash);
    }
  }
});

App.RESTDATA = {
'/plugins':
  {
    "meta":{
    "pagination":{
      "total_count":16,
      "total_pages":2,
      "current_page":1
    }
    },
    "plugins":[{
    "id":"1",
    "name":"zhangsan"
    }]
  }
};
于 2013-08-20T04:40:30.553 に答える