我正在尝试将应用程序从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)
有人可以帮帮我吗?
谢谢
我正在使用框架的新MVC模式编写一个简单的Sencha Touch 2应用程序 - 因此,有模型,存储,控制器和视图,所有这些都与应用程序绑定在一起.
现在,有可能使用"this.getApplication()"来获取这个超级超级类"应用程序"的实例.
现在有问题 - getApplication()只返回app-instance,如果我在一个控制器中 - 在视图,模型或商店中,它返回"undefined".
基本上,我可以理解这种行为背后的想法 - 您的业务必须在控制器中,而不是其他地方......所以您不必知道商店,视图或模型等应用程序实例...
好吧但是......让全局属性生活在主应用程序中会非常好.
例如,我想在Application中全局定义我的webservice-url并在我需要的任何地方使用该变量 - 不幸的是,我也需要在商店中使用这个url.
现在,我看到在商店中访问此全局变量的唯一方法是通过我的命名空间.而不是使用"this.getApplication().serviceUrl"我只通过命名空间找到了"NameOfMyApp.app.serviceUrl"的解决方案 - 而这可能不是解决此问题的最佳方法.
关于那个问题的任何想法?是否有更好的,始终可行的方式从各处获取应用程序实例?或者,如果不在应用程序中,我应该在哪里存储全局变量?
我正在使用带有底层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中找不到一个好的例子.
我刚开始拿起Sencha Touch 2 MVC.我有丰富的Ext 3经验,但这是一个全新的世界.
我似乎无法在构建视图方面走得很远.我根据我在互联网上看到的内容将我的代码分为两个方向,但都不起作用.
我的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()莫名其妙地永远不会被调用,因此视图完全不灵活.
我的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
我在Android中使用Sencha Touch 2开发了一个PhoneGap应用程序.现在我想在iOS中开发相同而不更改代码.我尝试使用PhoneGap Build,但它要求Apple开发人员注册或使用MacBook开发Xcode.有没有其他方法可以使用Windows XP,PhoneGap生成.ipa文件?
我正在使用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) 我正在使用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)
我需要使用纯JavaScript和ExtJS模拟点击此链接.必须在新窗口/选项卡中打开该链接.
我正在努力提高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 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) 我正在使用Ext JS 6.2现代工具包+ Cordova原生包装构建本机移动应用程序.我还使用CrossWalk Chromium插件而不是原生webview.
该应用程序需要大约10秒钟才能在中档手机(三星A5)上加载(即在Cordova启动画面后查看其界面).我优化它以在界面出现后执行所有Ajax连接.因此,这次需要加载和初始化框架.
有没有办法减少这个时间?有没有建议这样做?也许是一个插件或选项来延迟加载所需的框架类?有关Cordova和/或Sencha Ext JS的任何启动优化建议都受到欢迎.
sencha-touch-2 ×10
javascript ×3
cordova ×2
extjs ×2
sencha-touch ×2
android ×1
cors ×1
css ×1
ios ×1
iphone ×1
nested-lists ×1
performance ×1
startup ×1