ここで入手できる ExtJS の DataView サンプルに関していくつか質問があります。
http://dev.sencha.com/deploy/ext-4.0.0/examples/view/data-view.html
私が持っている質問は次のとおりです。
パネルを拡張し、アプリケーションに合わせていくつかのレイアウトや処理を行うカスタム コンポーネントがあります。この例のように、データ ビューを使用して、このコンポーネントの多くのインスタンスを垂直リスト ビューにレンダリングしたいと考えています。私は MVC を使用しており、モデルとストアを持っています。
この例では、ビューで selectionchange イベントをリッスンします。私は ExtJS MVC パターンに従っているので、コントローラーにこのイベントのリスナーが必要です。しかし、私はそれを行うことができません。私はこのようなことを試しました(アクションを想定:例のExt.view.Viewの「picturesListView」):
this.control({ 'picturesListView': { selectionchange: function() { console.log('selectionchange'); } } });
ただし、これは機能しません。
リクエストに応じてクラスコードを投稿する:
Ext.create('Ext.Panel', {
id: 'images-view',
frame: true,
collapsible: true,
width: 535,
renderTo: 'dataview-example',
title: 'Simple DataView (0 items selected)',
items: Ext.create('Ext.view.View', {
store: store,
tpl: [
'<tpl for=".">',
'<div class="thumb-wrap" id="{name}">',
'<div class="thumb"><img src="{url}" title="{name}"></div>',
'<span class="x-editable">{shortName}</span></div>',
'</tpl>',
'<div class="x-clear"></div>'
],
multiSelect: true,
height: 310,
trackOver: true,
overItemCls: 'x-item-over',
itemSelector: 'div.thumb-wrap',
emptyText: 'No images to display',
alias: 'view.picturesListView',
plugins: [
Ext.create('Ext.ux.DataView.DragSelector', {}),
Ext.create('Ext.ux.DataView.LabelEditor', {dataIndex: 'name'})
],
prepareData: function(data) {
Ext.apply(data, {
shortName: Ext.util.Format.ellipsis(data.name, 15),
sizeString: Ext.util.Format.fileSize(data.size),
dateString: Ext.util.Format.date(data.lastmod, "m/d/Y g:i a")
});
return data;
},
}
})
});