次のような構造の JSON があります。
{
"status": "success",
"data": {
"debtors": [
{
"debtor_id": 1048,
"debtor_contact_id": 1086,
...
...
},
{
"debtor_id": 1049,
"debtor_contact_id": 1087,
...
...
}
],
"count": 2,
"total": 475,
"current_page": 1,
"total_pages": 238,
"page_size": 2
}
}
私は、同僚の友人が作成を手伝ってくれたカスタム Ember-Model アダプターを持っています。これにより、次のdebtors
ようにキーからコレクションを取得できます。
var get = Ember.get;
var ViewAdapter = Ember.RESTAdapter.extend({
buildURL: function(klass, id) {
var urlRoot = Ember.get(klass, 'url');
if (!urlRoot) { throw new Error('ViewAdapter requires a `url` property to be specified'); }
if (!Ember.isEmpty(id)) {
return urlRoot + "/" + id;
} else {
return urlRoot;
}
},
ajaxSettings: function(url, method) {
return {
url: url,
type: method,
headers: {
"Accept": "application/json; version=1.0.0"
},
dataType: "json"
};
},
didFindQuery: function(klass, records, params, data) {
var collectionKey = get(klass, 'collectionKey'),
dataToLoad = collectionKey ? data['data'][collectionKey] : data;
records.load(klass, dataToLoad);
},
didFindAll: function(klass, records, data) {
var collectionKey = get(klass, 'collectionKey'),
dataToLoad = collectionKey ? data['data'][collectionKey] : data;
records.load(klass, dataToLoad);
}
});
export default ViewAdapter;
data
JSON には、債務者が参加するのと同じモデルに取り込みたいレベルのページネーション プロパティもいくつかあります。
これは、モデルを次のように見せたいものです。
import ViewAdapter from '../../adapters/accounts/view';
var attr = Ember.attr;
var View = Ember.Model.extend({
debtor_id: attr(),
debtor_contact_id: attr(),
...
...
current_page: attr(),
total_pages: attr()
});
View.adapter = ViewAdapter.create();
View.url = 'api/rest/debtor/list';
View.rootKey = 'data';
View.collectionKey = 'debtors';
View.primaryKey = 'debtor_id';
export default View;
このアダプターを変更して、data
レベルに入る前にレベルでこれらのプロパティを取得するにはどうすればよいdebtors
ですか?
また、これを別の方法で行う方が良いと思われる場合は、提案をお待ちしています。