0

Ext.XTemplateイベントに応答し、ハッキングされたJavaScriptの束を書く混乱を避けるようにコントローラーを設定しようとしています。

残念ながら、1)クリックイベントをログに記録する方法、または2)componentQueryXTemplateを登録するために使用する方法を見つけることができません。

基本的なコントローラー構成は次のとおりです。

config: {
        refs: {         
            reportChooser: 'xtemplate[id=jobReportChooser]'
        },
        control: {
            reportChooser: {
                tap: 'onAnonymousTap'
            }
        }
    },

コントローラでそれを行う方法はありますか、または少なくともリスナーをクリーンアップする方法はありますか?

4

1 に答える 1

0

イベントが組み込まれていないため、直接参照を見つけることができませんでしたXTemplateが、少しクリーンな回避策を次に示します。

ビューのinitializeメソッドで

initialize: function() {
    this.element.on({
        tap: function(e, dom) {

            var el = Ext.get(e.target),
                elParent = Ext.get(e.parent),
                fireEvent;

            window.jobAction = this;
            window.jobEl = el;

            if (el.hasCls('job-start') || el.parent().hasCls('job-start')) {
                fireEvent = 'start';
            } else if (el.hasCls('job-hold') || el.parent().hasCls('job-hold')) {
                fireEvent = 'hold';                    
            }  else if (el.hasCls('job-report') || el.parent().hasCls('job-report')) {
                Ext.Viewport.setMasked({ xtype: 'loadmask' });
                var teamId = APPNAME.currentItem.data.teamId;
                var jobId = APPNAME.currentItem.data.jobId;

                APPNAME.app.dispatch({controller: 'Jobs', action: 'displayReportChooser', args:[teamId,'job',jobId]})
            }

            if (fireEvent) {
                Ext.Viewport.setMasked({ xtype: 'loadmask' });
                this.fireEvent(fireEvent, Alloy.currentJob, el);
            }

        },
        delegate: '.job-info',
        scope: this
    });
}

その意味

アプリケーションを使用しますdispatch method。これにより、作業が大幅に楽になり、コントローラー内のアクションを整理するのに役立ちます。

http://docs.sencha.com/touch/2-0/#!/api/Ext.app.Application-method-dispatch

于 2012-07-12T01:47:37.883 に答える