我正在使用Sencha Touch 2.x构建应用程序。它由几个可能相互重叠的屏幕组成。
在应用启动时,我正在加载所有屏幕,方法是将它们添加为主视图中的项目(视口的一部分)。除了开始屏幕之外的所有这些都是隐藏的:true,它工作得非常好。我已经创建了一个新视图并尝试添加它,就像我对其他视图一样(事实上它是另一个的副本,只是更改了名称),但是在app启动时我得到了:
TypeError:'undefined'不是对象(评估'firingFn.apply')
当我删除hidden:true属性时,会显示视图并加载应用程序。当我使用Ext.create(namespace.view.name)创建视图时,它工作正常。
其他观点(或多或少完全相同)正在发挥作用!
我给了一个唯一的xtype,在Ext.define上指定了路径,将视图添加到了app.js. 因为我能够在没有“隐藏:真实”的情况下展示它,问题不应该在那里。
有人知道这种行为吗?
(我知道建议在需要后创建和销毁视图,但目前我们采用不同的方法。所以我对导致这种行为的原因感兴趣。)
这是我的主要观点:
Ext.define('namespace.view.Main', {
extend: 'Ext.Container',
xtype: 'Main',
config: {
layout: 'hbox',
items: [
//actual necessary screens
{
xtype: 'Start',
showAnimation: {type:'fade', duration: 200, easing: 'easeInOut'}
},
//Preloading all Screens on startup
{
xtype: 'SearchOertlichkeit',
hidden: true
//this is the one causing trouble !
},
{
xtype: 'MeldungNeu',
hidden: true,
showAnimation: {type:'fade', duration: 200, easing: 'easeInOut'}
},
{
xtype: 'MeldungenBearbeiten',
hidden: true,
showAnimation: {type:'fade', duration: 200, easing: 'easeInOut'}
},
{
xtype: 'SearchLocation',
hidden: true
},
{
xtype: 'SearchMieteinheit',
hidden: true
},
{
xtype: 'Menu',
hidden: true
}
]
} //endconfig
});
以下是我尝试展示的视图的一部分:
Ext.define('namespace.view.SearchOertlichkeit', {
extend: 'Ext.Container',
xtype: 'SearchOertlichkeit',
config: {
height: '100%',
width: window.innerWidth-300,
padding: 10,
modal: true,
hideOnMaskTap: true,
top: 0,
right: 0,
bottom: 0,
left: 'auto',
enter:'right',
exit: 'right',
showAnimation: {
type: 'slideIn',
direction: 'left',
easing: 'easeInOut'
},
hideAnimation: {
type: 'slideOut',
direction: 'right',
easing: 'easeInOut'
},
items: [
{
//here are some items
},
],
listeners: {
initialize: function(comp , eOpts){
this.element.on('swipe',
function(event, node, options, eOpts) {
namespace.app.getController('Main').onSwipe(event.direction, 'searchOertlichkeit');
}, comp
); //endonswipe
} //endinitialize
} //endlisteners
}, });
我找不到任何语法错误(使用Aptana,也没有向我显示任何错误)但是当我为生产构建时(sencha cmd运行成功)我尝试运行prod后出错-app:
Error evaluating http://127.0.0.1:8020/path/production/app.js with message: SyntaxError: Expected token '}'
答案 0 :(得分:0)
检查主视图中的最后一行,括号是注释:
} //endconfig });
应该是:
} //endconfig
});