1

私は sencha touch の初心者で、基本を学ぶために多くの調査とチュートリアルを行ってきましたが、実験を行っている今、理解できない問題に遭遇しました。

xtemplate に表示されるストアからデータを取得する基本的な DataList があります。

このテンプレート内で、ストア フィールド データをパラメーターとして解析する必要があるメンバー関数を作成しました。

サムネイル画像(ソースはストアから取得されます)をクリック/タップでメンバー関数を実行したいと思います。

ドキュメント内でこれに関する情報を見つけることができません。これについて最善の方法を知っている人はいますか?

コード例を次に示します(現在、実際のコードにアクセスできないため、ドキュメントから取得しました)。

var tpl = new Ext.XTemplate(
'<p>Name: {name}</p>'
{
    tapFunction: function(name){
       alert(name);
    }
}
);
tpl.overwrite(panel.body, data);

段落をクリック可能にして、tapFunction() メンバー関数を実行し、{name} 変数を渡します。

onclick="{[this.tapFunction(values.name)]} " のようなことをしてもうまくいかないようです。

4

1 に答える 1

5

ビューがレンダリングされるとすぐにテンプレート内の関数が実行されると思うので、これは適切な解決策ではないと思います。

あなたの場合、私がすることは次のとおりです。

< p > タグに独自のクラスを追加する

tpl : '<p class="my-p-tag">{name}</p>'

リストの itemtap イベントを検出する

データビュー コントローラーで、tapリストにイベント リスナーを追加します。

refs: {
  myList: 'WHATEVER_REFERENCE_MATCHES_YOUR_LIST'
},
control: {
  myList: {
    itemtap: 'listItemTap'
  }
}

タップのターゲットが < p > タグかどうかを確認する

listItemTapそのためには、次のように関数を実装します。

listItemTap: function(list,index,target,record,e){
  var node = e.target;
  if (node.className && node.className.indexOf('my-p-tag') > -1) {
    console.log(record.get('name'));
  }
}

お役に立てれば

于 2012-10-23T14:58:41.090 に答える