1

私は Ext ライブラリの初心者です。グリッド パネルを拡張して、新しいクラス レコードの 1 つからそのストアを参照しようとしています。

Ext.define('App.ui.CategoryGridPanel', {
extend : 'Ext.grid.Panel',
initComponent : function() {
    var storeToUse = this.store;

    if (storeToUse == null) {
        storeToUse = Ext.data.StoreManager.lookup(StoreIDs.CategoryStore);
    }

    this.categoryRowEditing = Ext.create('Ext.grid.plugin.RowEditing', {
        clicksToEdit : 2,
        store : storeToUse,
        listeners : {
            edit : function(editor, e) {
                this.store.sync();
            }
        }
    });

    Ext.apply(this, {
        store : storeToUse,
        height : 400,
        width : 300,
        plugins : [ this.categoryRowEditing ],
        columns : [ {
            header : 'Description',
            dataIndex : 'description',
            flex : 1,
            sortable : true,
            editor : 'textfield'
        } ],
        tbar : [ {
            xtype : 'button',
            text : 'New',
            handler : this.insertNewCategory
        } ]
    });

    this.callParent(arguments);
},
/**
 * Add new Category to grid.
 */
insertNewCategory : function() {
    var category = Ext.create(ModelNames.Category, {
        description : ''
    });

    this.store.insert(0, category);
    this.categoryRowEditing.startEdit(0, 0);
}

});

メソッドinserNewCategoryは常にスローされ、this.storeがnullを返すことがわかったいくつかのアラートを入れた後、未定義の挿入を呼び出すことはできません。Extのサンプルコードを確認しましたが、特に何もしていません。

助けてください :(

4

2 に答える 2

1
  1. thisinsertNewCategory メソッドの内容を確認してください。あなたは驚くでしょう。私の賭け-この機能の範囲について何もしなかったので、あなたが押しているのはボタンでしょう。

  2. Sencha のガイドとウォークスルーを読んでください。あなたのコードサンプルから、完全に間違った方法で使用していることは明らかです - ストアを割り当てて再割り当てするためにこの手動作業をすべて行う必要はありません - これはすべて ExtJs によって自動的に処理されます。

于 2012-04-22T11:46:32.090 に答える
0

カテゴリ オブジェクトの作成が失敗しているようです。

var category = Ext.create(ModelNames.Category, {
    description : ''
});

「カテゴリ」オブジェクトが正しく作成されていることを確認するために、この行の後に区切りを入れます。

「これ」の使用に関しては、直接使用することの危険性を調べることをお勧めします。多数のシナリオにより、予期しないものになる可能性があります。JavaScript の落とし穴に関する詳細については、こちらを参照してください。

于 2013-02-08T16:48:31.427 に答える