1

私は ExtJS を初めて使用し、Sencha フォーラムで同様の問題に遭遇しましたが、未解決のままでした。

これは問題へのリンクです

基本的に、私がやりたいことは、グリッドで選択されたデータを表示するデスクトップ ウィンドウ モジュール アプリを開くことです。リンクに表示されている同じウィンドウを既に作成しています。コードはまったく同じなので、ここにコードを投稿しても意味がないと思います。どんな助けでも大歓迎です。ありがとうございました。

4

1 に答える 1

2

私はあなたがコードのことについて正しいとは思いません...しかし、とにかく、この男のコードは混乱しており、ミッチェルはすでにそれがどのように行われるべきかを答えました. ですから、この男のコードを少し忘れてください。これをアーカイブするのは本当に簡単だからです。

これを行う方法を切り取った作業を次に示します。

Ext.define('Ext.ux.DemoWin', {
    extend: 'Ext.window.Window',
    alias: 'widget.demowin',
    width: 200,
    height: 200,
    title: 'demo',
    initComponent: function() {
        this.callParent(arguments);
    },
    loadRecord: function(rec) {
        // simplified - just update the html. May be replaced with a dataview
        this.update(rec.data.name + ' - ' + rec.data.email);
    }
});

Ext.create('Ext.data.Store', {
    storeId:'simpsonsStore',
    fields:['name', 'email', 'phone'],
    data:{'items':[
        { 'name': 'Lisa',  "email":"lisa@simpsons.com",  "phone":"555-111-1224"  },
        { 'name': 'Bart',  "email":"bart@simpsons.com",  "phone":"555-222-1234" },
        { 'name': 'Homer', "email":"home@simpsons.com",  "phone":"555-222-1244"  },
        { 'name': 'Marge', "email":"marge@simpsons.com", "phone":"555-222-1254"  }
    ]},
    proxy: {
        type: 'memory',
        reader: {
            type: 'json',
            root: 'items'
        }
    }
});


Ext.create('Ext.grid.Panel', {
    title: 'Simpsons',
    store: Ext.data.StoreManager.lookup('simpsonsStore'),
    columns: [
        { text: 'Name',  dataIndex: 'name' },
        { text: 'Email', dataIndex: 'email', flex: 1 },
        { text: 'Phone', dataIndex: 'phone' }
    ],
    height: 200,
    width: 400,
    renderTo: Ext.getBody(),
    listeners: {
        // the registration should be done with the control() method of the responsible controller
        itemclick: function(grid,record) {
            var win = Ext.widget('demowin').show().loadRecord(record);
        }
    }
});

そして、ここにJSFiddleがあります

Ext.ux.desktop.Module に適用される編集

createWindow : function(){
    var desktop = this.app.getDesktop();
    var win = desktop.getWindow('grid-win');
    if(!win){
        win = desktop.createWindow({
            // ...
            loadRecord: function(rec) {
                 this.update(rec.data.name + ' - ' + rec.data.email);
            }
  //....
于 2013-01-02T10:11:21.213 に答える