xcode 无法识别 sencha touch javascript 语法

Posted

技术标签:

【中文标题】xcode 无法识别 sencha touch javascript 语法【英文标题】:xcode does not recognize sencha touch javascript syntax 【发布时间】:2013-10-30 11:59:39 【问题描述】:

我有一个奇怪的行为。 我在 xcode 4.3 上运行我的 sencha touch 2/phonegap 2.0 应用程序

我的一些视图仅在模拟器/设备上不加载。虽然它在浏览器上加载正常。

我没有在日志中得到任何特殊错误,所以我开始在视图中放置项目。 最后我发现 XCODE 在识别某些 xtype 时遇到问题,例如“fieldset”、“emailfield”、“passwordfield”等。 将“fieldset”更改为“container”并将字段更改为“textfield”后,我的视图已成功加载。奇怪啊?

这发生在以下代码中:

    /*
 * File: app/view/loginformpanel.js
 *
 * This file was generated by Sencha Architect version 2.2.2.
 * http://www.sencha.com/products/architect/
 *
 * This file requires use of the Sencha Touch 2.1.x library, under independent license.
 * License of Sencha Architect does not include license for Sencha Touch 2.1.x. For more
 * details see http://www.sencha.com/license or contact license@sencha.com.
 *
 * This file will be auto-generated each and everytime you save your project.
 *
 * Do NOT hand edit this file.
 */

Ext.define('MyApp.view.loginformpanel', 
    extend: 'Ext.form.Panel',

    config: 
        baseCls: 'fbloginpanel',
        id: 'loginformpanel',
        itemId: 'loginformpanel',
        layout: 
            type: 'vbox'
        ,
        scrollable: 
            direction: 'vertical'
        ,
        items: [
            
                xtype: 'container',
                flex: 20,
                cls: 'fblogin',
                layout: 
                    type: 'vbox'
                ,
                items: [
                    
                        xtype: 'container',
                        flex: 3,
                        cls: 'wholepageRelative'
                    ,
                    
                        xtype: 'container',
                        flex: 18,
                        cls: 'wholepageRelative',
                        layout: 
                            type: 'vbox'
                        ,
                        items: [
                            
                                xtype: 'container',
                                flex: 8,
                                docked: 'top',
                                layout: 
                                    type: 'vbox'
                                ,
                                items: [
                                    
                                        xtype: 'fieldset',
                                        flex: 2,
                                        cls: 'loginmargin',
                                        docked: 'top',
                                        title: 'Existing User',
                                        items: [
                                            
                                                xtype: 'emailfield',
                                                id: 'email1',
                                                itemId: 'email1',
                                                name: 'email1',
                                                placeHolder: 'Email'
                                            ,
                                            
                                                xtype: 'passwordfield',
                                                id: 'password1',
                                                itemId: 'password1',
                                                name: 'password1',
                                                placeHolder: 'Password'
                                            
                                        ]
                                    ,
                                    
                                        xtype: 'button',
                                        flex: 1,
                                        cls: [
                                            'loginmargin',
                                            'Signbutton'
                                        ],
                                        docked: 'bottom',
                                        id: 'reglogin',
                                        itemId: 'reglogin',
                                        ui: 'round',
                                        icon: '',
                                        scope: this
                                    
                                ]
                            ,
                            
                                xtype: 'container',
                                flex: 10,
                                layout: 
                                    type: 'vbox'
                                ,
                                items: [
                                    
                                        xtype: 'container',
                                        flex: 10,
                                        layout: 
                                            type: 'vbox'
                                        ,
                                        items: [
                                            
                                                xtype: 'fieldset',
                                                flex: 4,
                                                cls: 'loginmargin',
                                                docked: 'top',
                                                layout: 
                                                    type: 'vbox'
                                                ,
                                                title: 'New User',
                                                items: [
                                                    
                                                        xtype: 'textfield',
                                                        id: 'username',
                                                        itemId: 'username',
                                                        name: 'username',
                                                        placeHolder: 'Username'
                                                    ,
                                                    
                                                        xtype: 'passwordfield',
                                                        id: 'password',
                                                        itemId: 'password',
                                                        name: 'password',
                                                        placeHolder: 'Password'
                                                    ,
                                                    
                                                        xtype: 'emailfield',
                                                        id: 'email',
                                                        itemId: 'email',
                                                        name: 'email',
                                                        placeHolder: 'Email'
                                                    ,
                                                    
                                                        xtype: 'passwordfield',
                                                        hidden: true,
                                                        id: 'hashpassword',
                                                        itemId: 'hashpassword',
                                                        label: 'ססמא',
                                                        name: 'hashpassword'
                                                    ,
                                                    
                                                        xtype: 'numberfield',
                                                        hidden: true,
                                                        label: 'Field',
                                                        name: 'bfacebook'
                                                    ,
                                                    
                                                        xtype: 'numberfield',
                                                        hidden: true,
                                                        label: 'Field',
                                                        name: 'bregister'
                                                    
                                                ]
                                            ,
                                            
                                                xtype: 'container',
                                                flex: 4,
                                                minHeight: 100,
                                                layout: 
                                                    type: 'vbox'
                                                ,
                                                items: [
                                                    
                                                        xtype: 'button',
                                                        cls: [
                                                            'loginmargin',
                                                            'Regbutton'
                                                        ],
                                                        docked: 'top',
                                                        id: 'regbtn',
                                                        itemId: 'regbtn',
                                                        ui: 'round',
                                                        icon: '',
                                                        scope: this
                                                    ,
                                                    
                                                        xtype: 'button',
                                                        cls: 'fbLoginbtn',
                                                        docked: 'bottom',
                                                        height: '',
                                                        id: 'fbloginbtn1',
                                                        itemId: 'fbloginbtn1',
                                                        ui: ''
                                                    
                                                ]
                                            ,
                                            
                                                xtype: 'container',
                                                flex: 2,
                                                docked: 'bottom',
                                                height: 50
                                            
                                        ]
                                    
                                ]
                            
                        ]
                    
                ]
            ,
            
                xtype: 'toolbar',
                cls: 'registerToolbar',
                docked: 'top',
                items: [
                    
                        xtype: 'button',
                        baseCls: 'backbtn',
                        docked: 'left',
                        height: '',
                        id: 'loginbackbtn',
                        itemId: 'loginbackbtn',
                        width: '18%'
                    
                ]
            
        ],
        listeners: [
            
                fn: 'onLoginbackbtnTap',
                event: 'tap',
                delegate: '#loginbackbtn'
            
        ]
    ,

    onLoginbackbtnTap: function(button, e, eOpts) 
        //var Screen = Ext.ComponentQuery.query('#fbloginpanel');

        Ext.Viewport.setActiveItem(Ext.ComponentQuery.query('#fbloginpanel')[0]);
        //Ext.Viewport.show();
    

);

现在我在其他观点中有更多的问题,甚至没有那些案例。

有人遇到过类似的问题吗? 请帮帮我。

【问题讨论】:

【参考方案1】:

只是一个简单的猜测,但您在发布的课程中没有使用“requires”关键字。

您的视图完全有可能无法在模拟器或设备上加载,因为应用不知道如何在构建后解析这些 xtype,因为“开发”和“生产”模式非常不同。

作为最佳实践,始终对您的类使用的每个依赖项使用“requires”。

【讨论】:

谢谢。我正在使用建筑师。所以这是它生成的代码。在我的主要 App.js 中,我看到了 EXT 的要求和路径以及要求。库(还不够): Ext.Loader.setConfig( disableCaching: false, paths: Ext: 'touch/src', 'Ext.device': 'device', 'MyApp.Facebook': 'app/ ' ); Ext.application( 需要: ['Ext.device.Geolocation', 'Ext.device.Notification', 'Ext.TitleBar', 'Ext.data.*', 'Ext.device.Connection' ], 在每个视图中都有一个“requires”配置 - 当您编译/构建应用程序时这是必需的,以便可以将依赖项捆绑在一起。 谢谢。确实是这样。但我只将需求放在 app.js 中,这就足够了。再次感谢。伊莱。 (PS 想知道为什么 android 不需要它?) 是的,我无法解释为什么它在一个地方有效,而在另一个地方无效。乐意效劳!有机会时标记为已接受;-)

以上是关于xcode 无法识别 sencha touch javascript 语法的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Sencha Touch 应用程序集成到 Cordova XCode 项目中?

Sencha Touch 2.2.1 Carousel 未初始化

Sencha-Touch:未捕获的类型错误:无法读取未定义的属性“代理”

无法在 Sencha-Touch2 中使用 Ext.Ajax 运行 javascript?

无法使用 sencha cmd 3.1.2.342 从 Sencha touch 项目生成 android apk

无法使用 Sencha Cmd 3.1.1.274 构建 Sencha Touch 2.1 应用程序