Javascript 在XTemplate内注册事件-Sencha Touch 2?
我正试图设置我的控制器来响应Javascript 在XTemplate内注册事件-Sencha Touch 2?,javascript,sencha-touch-2,Javascript,Sencha Touch 2,我正试图设置我的控制器来响应Ext.XTemplate事件,避免编写一堆被黑客攻击的javascript 不幸的是,我找不到方法1)记录单击事件或2)使用componentQuery注册XTemplate 以下是一个基本的控制器配置: config: { refs: { reportChooser: 'xtemplate[id=jobReportChooser]' }, control: {
Ext.XTemplate
事件,避免编写一堆被黑客攻击的javascript
不幸的是,我找不到方法1)记录单击事件或2)使用componentQuery
注册XTemplate
以下是一个基本的控制器配置:
config: {
refs: {
reportChooser: 'xtemplate[id=jobReportChooser]'
},
control: {
reportChooser: {
tap: 'onAnonymousTap'
}
}
},
有没有一种方法可以在控制器中执行此操作,或者至少清理侦听器?我找不到直接引用,因为
XTemplate
没有内置事件,但这里有一个很好的解决方法,它稍微干净了一点
在视图中初始化方法
initialize: function() {
this.element.on({
tap: function(e, dom) {
var el = Ext.get(e.target),
elParent = Ext.get(e.parent),
fireEvent;
window.jobAction = this;
window.jobEl = el;
if (el.hasCls('job-start') || el.parent().hasCls('job-start')) {
fireEvent = 'start';
} else if (el.hasCls('job-hold') || el.parent().hasCls('job-hold')) {
fireEvent = 'hold';
} else if (el.hasCls('job-report') || el.parent().hasCls('job-report')) {
Ext.Viewport.setMasked({ xtype: 'loadmask' });
var teamId = APPNAME.currentItem.data.teamId;
var jobId = APPNAME.currentItem.data.jobId;
APPNAME.app.dispatch({controller: 'Jobs', action: 'displayReportChooser', args:[teamId,'job',jobId]})
}
if (fireEvent) {
Ext.Viewport.setMasked({ xtype: 'loadmask' });
this.fireEvent(fireEvent, Alloy.currentJob, el);
}
},
delegate: '.job-info',
scope: this
});
}
它的含义
使用应用程序分派方法
。它将使生活更加轻松,并帮助您在控制器内组织操作