Sencha ExtJS フレームワークを使用する場合、ビューのイベントはそのビューのコントローラー内に存在します。コントローラーを使用していない場合、イベントをどこに保存しますか。
たとえば、MVC アプリケーションにユーザーのグリッド (userlist) があり、"itemdblclick" イベントがあるとします。非 MVC アプリケーション内に「itemdblclick」をどのように実装しますか?
Ext.define('AM.view.user.List' ,{
extend: 'Ext.grid.Panel',
alias: 'widget.userlist',
title: 'All Users',
// we no longer define the Users store in the `initComponent` method
store: 'Users',
...
});
Ext.define('AM.controller.Users', {
extend: 'Ext.app.Controller',
stores: ['Users'],
models: ['User'],
views: [
'user.List',
'user.Edit'
],
init: function() {
this.control({
'viewport > userlist': {
itemdblclick: this.editUser
},
'useredit button[action=save]': {
click: this.updateUser
}
});
},
editUser: function(grid, record) {
var view = Ext.widget('useredit');
view.down('form').loadRecord(record);
},
updateUser: function(button) {
console.log('clicked the Save button');
var win =
button.up('window'),
form = win.down('form'),
record = form.getRecord(),
values = form.getValues();
record.set(values);
win.close();
// synchronize the store after editing the record
this.getUsersStore().sync();
}
});