我有一个煎茶触摸2应用程序,无需部署即可完美运行。但是,当我部署到测试、生产或本机时,我在导航视图中有几个按钮,其中包含不再起作用的点击事件。不显示任何错误。我不明白为什么这只发生在部署之后。
以下是相关代码:
控制器:
control: {
'#main-function': {
tap: 'loadFunction'
},
loadMyBoat: function() {
this.getProducts().up().push({
xtype: 'myxtype',
})
Ext.getStore('Items').getProxy().setUrl('myurl');
Ext.getStore('Items').load();
},
视图:
Ext.define('MyBoat.view.ItemList', {
extend: 'Ext.navigation.View',
xtype: 'myxtype',
config: {
title: 'My Title',
styleHtmlContent: true,
defaultBackButtonText: 'Items List',
items: {
xtype: 'list',
itemTpl: '{Field_Name}',
title: 'Tap on a boat to access further details',
store: 'Boats'
}
}
})
有人遇到过这种情况吗?任何帮助将不胜感激。
打开你的 DOM 编辑器(我相信在 chrome 中是 F12)。控件选择器正在选择 #main 函数,因此您需要确保这是一个有效的选择器。
在开发人员工具窗口的控制台上,键入:
Ext.ComponentQuery.query('#main-function')
这应该是控制器正在尝试的。
经过大量调试,我设法解决了这个问题。事实证明,使用以下代码生成任何组件在部署后将无法正常工作:
new Ext.button({.....})
相反,您必须使用 xtypes 而不是 new 关键字。我认为这与部署程序将所有 js 代码存储在一个文件中的事实有关,因此由于我使用的是 new 关键字,它是在 js 文件中的某个地方创建的,而实际上它不会存在于上下文中。奇怪的是它没有显示任何错误,所以希望这会帮助其他人。