0

sencha touch 2でリストを作成しました。

var aroundList = Ext.create('Ext.List', {
    itemCls : 'my-dataview-item',
    id : 'aroundMeList',
    itemTpl : '<div><img style="padding:1px; border-style:solid; border-width:1px; border-color:{trustColor}" src="' + localStorage.httpServerPrefix + '{imageURI}"/><span id="name">{fullname}</span><span id="time">{time}</span><p id="msg">{text}<span id="count">&nbsp;{replyCount}&nbsp;</span></p><p id="dist">&nbsp;< '+localStorage.radius+''+localStorage.unit+' '+'&nbsp;</p></div>',
    store : aroundStore,
    listeners : {
        select : {
            fn : this.onMessageClickedInAround,
            scope : this
        }
    }
});

私はこのような出力を得ています(正確ではありませんが、このようなものです)

ここに画像の説明を入力

ユーザーがリストの最初の行または最初の項目をクリックすると、onMessageClickedInAround メソッドが呼び出されます (このメソッドは、そのユーザーからのメッセージを表示するためのものです)。上記のコードを確認できます。

今、私は、ユーザーがリスト内の画像をクリックしたときに、対応するプロファイルページを表示する必要があるという要件があります (つまり、1 人のユーザーがリスト内の画像をクリックすることで他のプロファイルを見ることができます)、私ができる方法はありますか?これ ?

4

2 に答える 2

4

これにはイベント委任を使用する必要があります

アップデート

var aroundList = Ext.create('Ext.List', {
    // rest of your cfg
    listeners : {
        // other listeners
        tap: {
            fn: yourHandler,
            element: 'element',
            delegate: 'img'
        }
    }
});

述べたように、以下は廃止されました

var aroundList = Ext.create('Ext.List', {
    // rest of your cfg
    listeners : {
        // other listeners
        el: {
            tap: yourHandler,
            delegate: 'img'
        }
    }
});
于 2013-02-08T08:54:06.657 に答える
2

あなたのリストがデータソースによって生成されている場合、sencha touch は対応するレコードを itemTap リスナーに渡します。次のようなものとしてそれを行うことができます。

    listeners : {
        itemtap: function (list, index, item, record) {
            // Show next view based on current record
        }
    }

画像タップでのみ実行したい場合は、そのリスナーでイベントを確認できます。

    listeners : {
        itemtap: function (list, index, item, record, senchaEvent) {
            if (senchaEvent.event.target.nodeName === 'img') {
                // Show next view
            }
        }
    }

クラスを与えて、<img>それをチェックすることもできます。

于 2013-02-08T09:17:20.163 に答える