我是sencha的新手。当在itemtpl中使用时,文本框的onkeypress事件似乎没有被触发。这是我的代码:
itemTpl: new Ext.XTemplate('<tpl><table width="100%"><tr><td width="10%"><div class="Drop_Down" id="pat_dropId"><input type="text" onkeypress="{[this.myFunction()]}" </div></td></tr></table><tpl>',
{
myFunction: function(itemKey)
{
console.log('myFunction');
}
}
控制台在加载列表时记录'myFunction'。当按下一个键时,按键事件不会触发。我期望在键盘上按键时触发我的功能。请帮助..我一直在寻找解决方案很长时间。
答案 0 :(得分:2)
Lorenz是对的,this
在修改文本字段时不引用itemTpl
。更改处理程序以调用全局函数,可能是控制器中的某些内容:
onkeypress="MyApp.app.getController(\'MyController\').myFunction()"
MyController.js:
Ext.define('MyApp.controller.MyController', {
extend: 'Ext.app.Controller',
//other config here
myFunction: function() {
//do something here
}
});
更新(根据您在其他地方的评论):
要传递参数,只需在XTemplate
中使用常规符号表示商店值。还要确保用引号括起参数,如果它不是数字/布尔值:
itemTpl: new Ext.XTemplate(
'<tpl><table width="100%"><tr>',
'<td width="10%">',
'<div class="Drop_Down" id="pat_dropId">',
'<input type="text" onkeypress="MyApp.app.getController(\'MyController\').myFunction(\'{myStoreValue}\')">',
'</div>',
'</td>',
'</tr></table><tpl>'
)
答案 1 :(得分:0)
更改你的Ext.XTemplate代码:
itemTpl: new Ext.XTemplate("<tpl><table width='100%'><tr><td width='10%'><div class='Drop_Down' id='pat_dropId'>
<input type='text' onkeypress='myFunction(this)'</div> </td></tr></table><tpl>")
函数在index.html中定义:
<script type="text/javascript">
function myFunction(that){
//your code
}
</script>
答案 2 :(得分:0)
itemTpl: new Ext.XTemplate('<tpl><table width="100%"><tr><td width="10%"><div class="Drop_Down"><input style="color:green;display:block;width:50px;text-align:center;" type="text" pattern="\d*" id="{ItemKey}" onkeyup="myapp.app.getController(\'myappController\').TextboxKeyUp(this)" onfocus="myapp.app.getController(\'myappController\').TextFocus(this)" ></div></td></tr></table><tpl>',