0

ビューの初期化部分で宣言された変数があります。パネルで宣言されている関数でこの変数にアクセスしようとすると、変数が未定義であるというエラーが表示されます。1>this.variablename でアクセスしようとしました2>viewid.variablename....何が間違っていますか?

Ext.define('app.view.location', {
            extend : 'Ext.Panel',
            xtype : 'location_d',
            id : 'locdetail',
            initialize : function() {
                loc = 'abc';
            },
            config : {
                layout : {
                    type : 'card'
                },
                scrollable : true,
                fullscreen : true,
                items : [{
                            xtype : 'panel',
                            html : 'Get Dir',
                            id : 'Dir',
                            cls : 'loc',
                            listeners : {
                                tap : {
                                    element : 'element',
                                    fn : function(m) {
                                        alert(this.loc); //gives me undefined variable error
                                    }
                                }
                            }
                        }]
            }
        });
4

1 に答える 1

6

コードにいくつかの間違いがあります。

まず、構成にローカル変数を追加する必要があります。

config : {
    layout : {
        type : 'card'
    },
    loc: null,
    scrollable : true,
    ...}

次に、彼のセッターでlocを設定する必要があります。

initialize : function() {
    this.setLoc("abc");
},

タップリスナーでは、これを操作することはできません。これは、外側ではなく内側のパネルを参照しているため、ComponenetManagerを使用して外側のパネルを取得します。

listeners : {
    tap : {
        element : 'element',
        fn : function(m) {
            alert(Ext.ComponentManager.get("locdetail").getLoc());
        }
    }
}

試してみましたが、問題なく動作します!

完全なコード:

Ext.define('app.view.location', {
    extend : 'Ext.Panel',
    xtype : 'location_d',
    id : 'locdetail',
    initialize : function() {
        this.setLoc("abc");
    },
    config : {
        layout : {
            type : 'card'
        },
        loc: null,
        scrollable : true,
        fullscreen : true,
        items : [{
            xtype : 'panel',
            html : 'Get Dir',
            id : 'Dir',
            cls : 'loc',
            listeners : {
                tap : {
                    element : 'element',
                    fn : function(m) {
                        alert(Ext.ComponentManager.get("locdetail").getLoc());
                    }
                }
            }
        }]
    }
});

Sencha Touchクラスシステムガイド: http: //docs.sencha.com/touch/2-1/#! / guide / class_system

于 2013-01-25T12:20:53.747 に答える