1

私は最近、プロジェクトでSencha Touchを使い始めましたが、しばらくの間ExtJSを使用してきましたが、この2つは多くの点で異なります。学習曲線を複雑にするために、私はSTを、UI /フレームワーク全体/すべてを処理するというよりも、基盤となるフレームワークとして適用しています。そのため、「painted」などのイベントの使用を維持したい一方で、要素のリスナーを設定する配列メソッドを使用したいという状況に遭遇しました。

ここに例があります-私は99%ポジティブです、私がやろうとしていることをするためのより良い方法があります:

Ext.create('Ext.Container', {
    html: '<ul><li id="blah">Blah</li><li id="hooey">Hooey</li></ul>',
    listeners: [{
        element: 'element',
        delegate: 'li#blah',
        event: 'tap',
        fn: function() { /* do something for blah */ }
    },{ 
        /* repeat for hooey, etc */
    }]
});

反対に、コンテナに標準のリスナーが必要な場合はどうなりますか?

Ext.create('Ext.Container', {
    listeners: {
        activate: function() {
            // do some stuff here
        }
    }
 });

たとえば、アクティブ化リスナーを実行してから、アクティブ化/表示/ペイント/ whathaveyouのコンポーネントに要素タップイベントハンドラーを適用する代わりに、同じコンポーネントでこれらを実行するためのベストプラクティスを知りたいです。

注:extjsを使用したタグ付けは、そこにも適用されると思います。そうでない場合は、遠慮なく編集するか、お知らせください。タグを取得します。

4

1 に答える 1

1

一般に、別のコンポーネントのコンポーネントの要素をいじってはいけません。それらがプライベートプロパティのようなものであると想像してください(コンポーネントのレンダリングHTMLは変更される可能性があるため、それに依存しないでください)。最初の例のコードは見栄えがよくありません。これがまったく機能するかどうかさえわかりません。ousideワールドにエクスポートするためのコンポーネントイベントを実装する必要があります。

場合によっては、getEl()、getScrollerEl()などのメソッドを使用して要素をエクスポートできます。ただし、ほとんどの場合、これは何か間違ったことをしていることを示しています。

PSバインディング要素のイベントリスナーについては、ドキュメントのExt.dom.Elementで説明されています。

于 2012-07-27T10:21:11.577 に答える