1

我对 sencha touch 比较陌生,我已经做了很多研究和教程来学习基础知识,但是现在我正在尝试我遇到了一个我无法弄清楚的问题。

我有一个基本的 DataList,它从显示在 xtemplate 中的商店获取数据。

在此模板中,我创建了一个成员函数,该函数需要将存储字段数据解析为参数。

我想制作一个缩略图(即从商店中提取的源)在单击/点击时执行成员函数。

我在文档中找不到有关此的任何信息,有人知道解决此问题的最佳方法吗?

这是一个代码示例(从文档中提取,因为我现在无法访问我的实际代码)。

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 回答