我最近开始学习ExtJS,并且无法理解如何处理事件.我没有任何以前版本的ExtJS的经验.
从阅读各种手册,指南和文档页面,我已经找到了如何使用它,但我不清楚它是如何工作的.我已经为旧版本的ExtJS找到了几个教程,但我不确定它们在ExtJS 4中的适用性.
我特别关注像这样的"最后一句话"
例如,这个问题让我相信事件处理程序可以接收相当多的参数.我见过其他教程,只有两个参数处理器.有什么变化?
我在ExtJS 4中构建应用程序时很困难,其中一部分是关于何时在initComponent()中配置某些内容以及何时不...
例如,在Sencha自己的MVC Application Architecture doc中,首次创建网格视图时,他们在initComponent()方法中定义了内联存储.(参见"定义视图"部分)
再往下,当他们将商店分解为一个单独的类时,他们将定义移到了initComponent()之外.有一个有用的评论引起了对这一事实的关注,但没有解释.(请参阅创建模型和存储部分)
我猜原因应该是显而易见的,但我很想念它.有什么指针吗?
我有一个带有商店的Ext.grid.Panel(aka gridpanel),仅用于客户端视觉效果(即,没有任何内容保存到服务器).当我创建新的模型实例并将它们添加到商店时,它们会在网格中显示一个红色的角(可能表示存储更改尚未保存).
目前,我在每个记录/模型上调用.commit()方法,然后将其添加到商店,以防止网格中的脏记录红色角落.
是否有更简单的方法来简单地配置网格面板,以便不显示有关记录"脏"状态的任何可视指示器?
注意:这个类似问题的解决方案要么涉及CSS,要么仅适用于ExtJS 3.我希望找到一个适用于ExtJS 4的程序化"设置".
我们将在Web上构建一个企业级应用程序,为此我们已经将我们的选择过滤到ExtJS和KendoUI.
两者都很不错并且具有丰富的功能/控件,KendoUI的性能比ExtJS快,但ExtJS就像更完整的包,其中包括构建桌面所需的每个组件,如Web应用程序和Grid似乎更强大.
另一方面,使用KendoUI,我们拥有jQuery的强大功能,感觉像家庭熟悉和几乎零学习曲线,因为团队已经使用jQuery.
有没有人有使用其中任何一个构建大型企业级应用程序的经验?如果是,你的经历是什么?请分享它是坏还是好,以便在我最终与他们中的任何人长时间合作之前我可以有一些基础.
我更倾向于ExtJS,因为我们将使用来自CubeDrive(myCalendar)的调度程序控件,它再次位于ExtJS中.
因此,欢迎您的想法和经验帮助我做出正确的决定.
我想使用其中的其他ExtJS组件(例如TreePanel)创建自定义ExtJS 表单字段组件.我怎样才能最轻松地完成这项工作?
我已经阅读了Ext.form.field.Base的文档,但我不想定义字段体fieldSubTpl.我只想编写创建ExtJS组件的代码,也可以编写一些获取和设置值的代码.
更新:总结目的如下:
这个新组件应该以GUI形式作为字段.它应该具有标签和其他字段的相同对齐(标签,锚点),而无需进一步的黑客攻击.
可能,我必须编写一些getValue,setValue逻辑.我宁愿将它嵌入到这个组件中,而不是将分离的代码复制到我必须管理的更隐藏的表单字段中.
我有一个Ext.form.field.Text,我想要覆盖该setValue功能.
在ExtJS中覆盖此类功能的推荐方法是什么?Ext.override?
我正在将我的应用程序从ExtJs 3迁移到4版本.我在formPanel上有几个组合框,之前我使用了hiddenName和所有这些东西来提交valueField而不是displayField.
所有我的改编工作正常(值字段IS提交),但我无法设置组合框的默认值,它们在页面加载后显示为空.以前,我只是在config中指定'value'参数.有什么想法如何解决这个问题?
我的代码 - 模型和商店:
Ext.define('idNamePair', {
extend: 'Ext.data.Model',
fields: [
{name: 'id', type: 'string'},
{name: 'name', type: 'string'}
]
});
var dirValuesStore = new Ext.data.Store({
model: 'idNamePair',
proxy: {
type: 'ajax',
url: '../filtervalues.json',
reader: {
type: 'json',
root: 'dir'
}
},
autoLoad: true
});
Run Code Online (Sandbox Code Playgroud)
组合配置:
{
triggerAction: 'all',
id: 'dir_id',
fieldLabel: 'Direction',
queryMode: 'local',
editable: false,
xtype: 'combo',
store : dirValuesStore,
displayField:'name',
valueField:'id',
value: 'all',
width: 250,
forceSelection:true
}
Run Code Online (Sandbox Code Playgroud) 这是有效.JPEG图像的二进制文件.
http://pastebin.ca/raw/2314500
我曾尝试使用Python将这个二进制数据保存到图像中.
如何将此数据转换为带有extjs 4的可查看.JPEG图像?
我试过这个,但它不起作用.
data:image/jpeg;base64,+ binary data
Run Code Online (Sandbox Code Playgroud) 使用ExtJS 3.x,我能够使用商店的"fields"属性,但在ExtJS 4中我似乎必须绝对使用模型.这很好,但就我而言,它不是一个静态模型,我需要动态定义字段,有时需要更改它们.
我可以重新创建一个模型,但我需要使用不同的名称,因为它显然不可能修改现有的模型,也不能删除它.如果我尝试使用具有相同名称的Ext.regModel,则ExtJS崩溃.
谢谢你的帮助!
我有一个带有商店,模型和一些视图的控制器.
我需要在控制器中监听存储beforesync和write事件,但我不知道如何在controllers control-function中设置这些监听器.
我的商店看起来像这样:
Ext.define('DT.store.UsersStore', {
extend : 'Ext.data.Store',
model : 'DT.model.User',
id : 'myStore'
autoSync : true,
proxy : {
type : 'ajax',
api : {
read : '/load_entries',
update : '/update_entry'
},
reader : {
type : 'json',
root : 'user',
successProperty : 'success'
}
}
});
Run Code Online (Sandbox Code Playgroud)
现在我尝试听我的控制器中的事件:
...
init : function () {
this.control({
'myStore' : {
beforesync : this.doSomething,
write : this.doSomethingElse
}
});
},
...
Run Code Online (Sandbox Code Playgroud)
我的预期结果是,在触发事件时将执行函数.但此时他们被解雇时没有任何反应.
我怎样才能让它发挥作用?
extjs4 ×10
extjs ×9
javascript ×3
extjs4.1 ×2
ajax ×1
combobox ×1
forms ×1
kendo-ui ×1
overriding ×1