私は extjs4 mvc で作業しており、ある時点で立ち往生しています。実はextjs4で関連するjsonデータをグリッドに表示したいのです。私はたくさん試して検索しましたが、まだ問題は解決していません。
ここに私のいくつかのコードがあります
私のビューファイル:
Ext.define('AM.view.user.List' ,{ extend: 'Ext.grid.Panel', alias : 'widget.userlist', title : 'All Users', store: 'Users', columns: [ {header: 'Name', dataIndex: 'name', flex: 1}, {header: 'Email', dataIndex: 'email', flex: 1}, {header:'title',dataIndex:'title',flex:1} //I tried ] });
コントローラ ファイル:
Ext.define('AM.controller.Users', { extend: 'Ext.app.Controller', stores: ['Users'], models: ['User','Book'], views: ['user.Edit', 'user.List'], refs: [{ ref: 'usersPanel', selector: 'panel' }], init: function() { this.control({ 'viewport > userlist dataview': { itemdblclick: this.editUser }, 'useredit button[action=save]': { click: this.updateUser } }); } });
ユーザー モデル ファイル:
Ext.define('AM.model.User', { extend: 'Ext.data.Model', fields: ['id', 'name', 'email'], hasMany: { model: 'AM.model.Book', //model: 'Book', foreignKey: 'userId', name: 'books' }, proxy: { type: 'ajax', api: { read: 'data/users.json', update: 'data/updateUsers.json' }, reader: { type: 'json', root: 'users', successProperty: 'success' } } });
ユーザーストアファイル:--
Ext.define('AM.store.Users', { extend: 'Ext.data.Store', model: 'AM.model.User', autoLoad: true });
書籍モデル ファイル:
Ext.define('AM.model.Book',{ extend: 'Ext.data.Model', fields: [ {name: 'id', type: 'int'}, {name: 'title', type: 'string'}, //,mapping:'record[0].title' not working {name: 'userId', type: 'int'} ] });
json ファイル:
{ "success": "true", "users": [ { "id": "1", "name": "shilpa", "email": "shilpa@sencha.com", "books": [ { "id": "10", "title": "c++", "userId": "1" } ] } ] }
スクリーンショットは次のとおりです。
関連データをグリッドに表示するための提案を教えてください。