标签: sencha-touch-2

Ext.require的目的是什么?

我正在尝试将应用程序从Sencha-Touch 1迁移到Sencha-Touch 2,我无法弄清楚以下代码的确切目的是什么:

Ext.require([    
    'Ext.XTemplate',
    'Ext.Panel',
    'Ext.Button',
    'Ext.List',
    'Ext.Carousel',
    'Ext.NestedList'
]);
Run Code Online (Sandbox Code Playgroud)

有人可以帮帮我吗?

谢谢

sencha-touch-2

6
推荐指数
1
解决办法
3519
查看次数

无法在商店或视图中使用getApplication()

我正在使用框架的新MVC模式编写一个简单的Sencha Touch 2应用程序 - 因此,有模型,存储,控制器和视图,所有这些都与应用程序绑定在一起.

现在,有可能使用"this.getApplication()"来获取这个超级超级类"应用程序"的实例.

现在有问题 - getApplication()只返回app-instance,如果我在一个控制器中 - 在视图,模型或商店中,它返回"undefined".

基本上,我可以理解这种行为背后的想法 - 您的业务必须在控制器中,而不是其他地方......所以您不必知道商店,视图或模型等应用程序实例...

好吧但是......让全局属性生活在主应用程序中会非常好.

例如,我想在Application中全局定义我的webservice-url并在我需要的任何地方使用该变量 - 不幸的是,我也需要在商店中使用这个url.

现在,我看到在商店中访问此全局变量的唯一方法是通过我的命名空间.而不是使用"this.getApplication().serviceUrl"我只通过命名空间找到了"NameOfMyApp.app.serviceUrl"的解决方案 - 而这可能不是解决此问题的最佳方法.

关于那个问题的任何想法?是否有更好的,始终可行的方式从各处获取应用程序实例?或者,如果不在应用程序中,我应该在哪里存储全局变量?

sencha-touch-2

6
推荐指数
1
解决办法
4781
查看次数

Sencha Touch 2:插入TreeStore/NestedList

我正在使用带有底层TreeStore的NestedList.现在我想将项目添加到NestedList中作为叶子.我怎样才能做到这一点?

目前我的代码(Controller,onAddButtonTapped)如下所示:

var store = Ext.getStore('menuStore');
var customerAreaNode = store.getRoot().getChildAt(1);  
customerAreaNode.appendChild({name: "text", leaf:true});
customerAreaNode.expand();
store.sync();
Run Code Online (Sandbox Code Playgroud)

此代码在叶级别(在正确的节点后面)和节点级别上的一个新的侦听中产生两个新的空侦听.每个新条目都没有在NestedList中显示的名称,但每个项目的名称字段中都包含"text".奇怪的是,叶级别的一个新条目没有输入到底层模型.因此无法找到模型对应的方法:

Uncaught TypeError: Cannot call method 'getSelectedName' of undefined
Run Code Online (Sandbox Code Playgroud)

有没有人知道如何将数据添加到NestedList/TreeStore的简单教程?我在sencha touch docs中找不到一个好的例子.

tree-structure nested-lists sencha-touch-2

6
推荐指数
1
解决办法
2198
查看次数

Sencha Touch 2中的Ext.define/Ext.extend

我刚开始拿起Sencha Touch 2 MVC.我有丰富的Ext 3经验,但这是一个全新的世界.

我似乎无法在构建视图方面走得很远.我根据我在互联网上看到的内容将我的代码分为两个方向,但都不起作用.

路径1

我的app.js:

Ext.application({
        name: 'BkAdmin',
        views: ['LoginForm'],
        launch: function() {
            Ext.create('BkAdmin.view.LoginForm');
    }
});
Run Code Online (Sandbox Code Playgroud)

我的观点/ LoginForm.js:

Ext.define('BkAdmin.view.LoginForm', {
        extend: 'Ext.form.FormPanel',
        config: {
            fullscreen: true,
            initComponent: function() {
                        alert('yo!');
                        BkAdmin.view.LoginForm.superclass.initComponent.apply(this, arguments);
            }
        }
    }
);
Run Code Online (Sandbox Code Playgroud)

这加载没有错误,我甚至可以在配置部分添加表单项.但是,initComponent()莫名其妙地永远不会被调用,因此视图完全不灵活.

路径2

我的app.js:

Ext.application({
    name: 'BkAdmin',
    views: ['LoginForm'],
    launch: function() {
    BkAdmin.view.LoginForm = new BkAdmin.view.LoginForm();
    }
});
Run Code Online (Sandbox Code Playgroud)

我的观点/ LoginForm.js:

BkAdmin.view.LoginForm = Ext.extend(Ext.form.FormPanel, {
    fullscreen: true,
    initComponent: function() {
                alert('yo!');
        BkAdmin.view.LoginForm.superclass.initComponent.apply(this, arguments);
    }
});
Run Code Online (Sandbox Code Playgroud)

这种平坦无效.Chrome报告'无法设置属性'LoginForm'未定义'...如何查看未定义的视图?此外,它还说'即使文件已加载,也不会声明以下类:'BkAdmin.view.LoginForm'.' 当然看起来向我宣布.

这里有很多问题:在上述路径中我做错了什么?如何在路径1中调用initComponent()并使路径2工作?引用哪个代码 - unquote更好用?

谢谢!

javascript model-view-controller sencha-touch sencha-touch-2

6
推荐指数
1
解决办法
7998
查看次数

如何通过PhoneGap for iOS获取.ipa文件?

我在Android中使用Sencha Touch 2开发了一个PhoneGap应用程序.现在我想在iOS中开发相同而不更改代码.我尝试使用PhoneGap Build,但它要求Apple开发人员注册或使用MacBook开发Xcode.有没有其他方法可以使用Windows XP,PhoneGap生成.ipa文件?

ios sencha-touch sencha-touch-2 cordova

6
推荐指数
1
解决办法
2万
查看次数

HTTP选项转发前请求已加载已取消,Chrome中有待处理状态

我正在使用Sencha Touch 2.1.0.我正在进行HTTP GET调用.这是一个CORS请求.因此它正在按预期发送Pre-flight HTTP OPTIONS命令.

我在我的服务器上安装了CORS过滤器并进行了配置.来自我的代码的电话一直很顺利,直到昨天.突然间它今天停止加载数据.当我在Chrome中查看网络电话时,我发现OPTIONS方法显示为"已取消加载"

方法:选项
状态文本:"加载取消"
类型:待定
启动器:Connection.js:319

我第一次配置CORS过滤器时遇到了类似的问题.当我清除浏览器缓存时,它开始工作.这一次,我不确定它为什么突然停止工作.即使我在浏览器中清除缓存和历史记录,也无法修复.

如果我在Firefox中使用HTTPRequestor进行同样的调用,那么它的效果非常好.这是电话.由于保密原因,我屏蔽了网址.

OPTIONS http://myurl/rest/items?_dc=1358304888220&page=1&start=0&limit=25 HTTP/1.1
Access-Control-Request-Method: GET
Origin: http://localhost:8080
Access-Control-Request-Headers: accept, origin, x-requested-with
Run Code Online (Sandbox Code Playgroud)

同样的确切请求给了我一个非常好的HTTPRequestor响应.结果如下:

OPTIONS http://myurl/rest/items?_dc=1358304888220&page=1&start=0&limit=25
Access-Control-Request-Headers: accept, origin, x-requested-with
Access-Control-Request-Method: GET
Origin: http://localhost:8080


 -- response --
200 OK
Date:  Wed, 16 Jan 2013 03:19:27 GMT

Server:  Apache-Coyote/1.1

Access-Control-Allow-Origin:  http://localhost:8080

Access-Control-Allow-Credentials:  true

Access-Control-Allow-Methods:  HEAD, GET, POST, OPTIONS

Access-Control-Allow-Headers:  X-Requested-With, Origin, Accept, Content-Type

Content-Length:  0

Strict-Transport-Security:  max-age=15768000, includeSubDomains

Keep-Alive:  timeout=15, max=100

Connection:  Keep-Alive
Run Code Online (Sandbox Code Playgroud)

在商店中使用Sencha代码进行此调用:

    proxy: {
        type: 'ajax',
        method: 'GET', …
Run Code Online (Sandbox Code Playgroud)

google-chrome cors http-options-method sencha-touch-2

6
推荐指数
1
解决办法
5001
查看次数

在JS for Android和iPhone的链接标签上触发点击事件

我正在使用Sencha Touch(JavaScript和ExtJS)开发移动Web应用程序.我有一个链接标记(只是<a>标记href),我需要触发click事件.
我已经找到了myelement.dom.click();这个工作的召唤,但它不适用于Android ......是否有某种通用的解决方案?

UPDATE

我有一个带有html代码的容器:

<a href="http://google.com" id="link_to_click" target="_blank">CLICK ME</a>
Run Code Online (Sandbox Code Playgroud)

我需要使用纯JavaScriptExtJS模拟点击此链接.必须在新窗口/选项卡中打开该链接.

javascript iphone android extjs sencha-touch-2

6
推荐指数
1
解决办法
5999
查看次数

使用Sencha Architect提高性能ST2.3应用程序

我正在努力提高Sencha Touch 2.3应用程序的性能.我确实使用Sencha Architect 3构建了应用程序.现在,我通过不包括所有默认的sencha css类来阅读一些关于提高应用程序性能的帖子(请参阅https://www.sencha.com/blog/4-tricks-for-smaller -css-in-touch-22 /).我也想将这种方法应用到我的应用程序中(其他建议也会被考虑在内).但是,使用Sencha架构师来编译/构建我的应用程序时,由于Sencha Architect中的主题选项而未使用app.scss文件(请参阅Sencha Architect 3不使用app.css).有没有其他方法不包括所有默认的CSS文件?

使用:

  • Sencha Architect版本:3.0.2.1375
  • Sencha cmd:4.0.2.67框架:
  • Sencha Touch 2.3.x

亲切的问候

css performance sencha-touch-2 sencha-architect

6
推荐指数
1
解决办法
381
查看次数

ListItem的items属性的XTemplate定义

我正在使用Sencha 2.3.0,我希望将一个XTemplate与ListItem上的组件(文本字段)并排放置.上面的代码适用于DataView/DataItem,但我想使用仅在List/ListItem上可用的分组属性.

嵌套的Xtemplate被渲染为DataItem.如何让它适用于ListItem?我也接受放弃这个嵌套结构的解决方案,并直接在ListItem上使用xtemplate作为tpl属性(当然也必须实现带有监听器的文本字段).

名单

Ext.define( 'app.view.myList', {
    //extend: 'Ext.dataview.DataView',
    extend: 'Ext.dataview.List',

    xtype: 'mylist',

    requires: [
        'app.view.MyItem'
    ],

    config: {
        title: "myTitle",
        cls: 'mylist',
        defaultType: 'myitem',
        grouped: true,
        store: 'myStore',
        useComponents: true,
        itemCls: 'myitem',

        items: [
            {
                // some components
            }
        ]
    }
});
Run Code Online (Sandbox Code Playgroud)

项目清单

Ext.define( 'app.view.myItem', {

    //extend: 'Ext.dataview.component.DataItem',
    extend: 'Ext.dataview.component.ListItem',
    xtype: 'myitem',

    config: {
        cls: 'myitem',

        items: [
            {
                xtype: 'component',
                tpl: new Ext.XTemplate([
                        '<table cellpadding="0" cellspacing="0" class="myitemXTemplate">',
                            //some xtemplate content
                        '</table>'
                    ].join( "" ),
                    {
                        compiled: true
                    }) …
Run Code Online (Sandbox Code Playgroud)

javascript sencha-touch-2

6
推荐指数
1
解决办法
234
查看次数

加速Cordova打包的应用程序加载时间

我正在使用Ext JS 6.2现代工具包+ Cordova原生包装构建本机移动应用程序.我还使用CrossWalk Chromium插件而不是原生webview.

该应用程序需要大约10秒钟才能在中档手机(三星A5)上加载(即在Cordova启动画面后查看其界面).我优化它以在界面出现后执行所有Ajax连接.因此,这次需要加载和初始化框架.

有没有办法减少这个时间?有没有建议这样做?也许是一个插件或选项来延迟加载所需的框架类?有关Cordova和/或Sencha Ext JS的任何启动优化建议都受到欢迎.

extjs startup sencha-touch-2 cordova

6
推荐指数
0
解决办法
165
查看次数