0

次のコードは、問題を説明しています。

var store = Ext.create('Ext.data.Store', {
                      fields: ['Name'],
                      data: [                        
                       {
                          Name: 'Java'
                       },
                       {
                          Name: 'C'
                       },
                       {
                          Name: 'Android'
                       }
                      ]
                     });
    store.insert(0, [Ext.create(store.model, {
           Name: ''
        })]);

    Ext.create('widget.combobox', {
            renderTo: Ext.getBody(),
            margin: '10',
            width: 500,
            store: store,
            displayField: 'Name',
            valueField: 'Name',
            queryMode: 'local'
            listeners: {
                 beforeselect: function (cbo, rec, idx) {                                                                                    
                      console.log(idx);               
                 }
            }
          });

「挿入」メソッドを使用してストアに挿入される新しいデータには、コンボボックスにインデックスがありません。空白のレコードをクリックするたびに、idx のログが「未定義」であることがわかります。私の期待は「0」です。どうすればこれを修正できますか?

4

1 に答える 1

1

良い発見です。これはおそらく Ext のバグです。(文書化されていない) レコード インデックスは関数内で設定さloadDataloadRawData、挿入されたレコードで更新されません。

このバグのある実装に依存せず、計算ストア インデックスを使用して回避してください。

beforeselect: function (cbo, rec) {
    var idx = cbo.getStore().indexOf(rec);
    console.log(idx);
}
于 2013-08-06T14:28:26.783 に答える