我在ExtJS源代码中找到了这种模式.
method: function() {
var me = this;
...
me.someOtherMethod();
}
Run Code Online (Sandbox Code Playgroud)
他们为什么不使用this?总是经常定义me(在不必输入2个字符之外)是否有一些优势?我可以理解他们是否试图通过闭包来维护上下文,但它是在没有闭包的地方完成的.
Ext.panel.Panel的一个例子:
disable: function(silent) {
var me = this;
if (me.rendered) {
me.el.addCls(me.disabledCls);
me.el.dom.disabled = true;
me.onDisable();
}
me.disabled = true;
if (silent !== true) {
me.fireEvent('disable', me);
}
return me;
},
Run Code Online (Sandbox Code Playgroud) 我有一个Ext.form.field.Text,我想要覆盖该setValue功能.
在ExtJS中覆盖此类功能的推荐方法是什么?Ext.override?
使用Ext,默认Ext.Ajax添加到GET请求_dc参数.例如
GET /ConnViewProcessing/?_dc=1263286227619
Run Code Online (Sandbox Code Playgroud)
如何删除此参数?
PS:有必要手动缓存对ETag和的响应If-None-Match.
我注意到自从升级到ExtJS 4.2后,当文本字段中出现错误时显示的工具提示不足以查看工具提示的内容 - 它们似乎总是宽40px.
这是一个显示问题的测试用例:
<html>
<head>
<title>Field error tooltips</title>
<link rel="stylesheet" type="text/css" href="ext-4.2.0/resources/css/ext-all.css">
<script type="text/javascript" src="ext-4.2.0/ext-all-debug.js"></script>
</head>
<body>
<script type="text/javascript">
Ext.onReady(function(){
var form = Ext.create("Ext.form.Panel",{
title: 'My form',
width: 300,
height: 100,
items: [
{xtype: 'textfield', name: 'FIELD1', fieldLabel: 'Field 1', allowBlank: false}
],
renderTo: Ext.getBody()
});
});
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,如果单击该字段然后单击其中而不键入任何内容,则会显示一个工具提示,说明它不允许为空.不幸的是,工具提示的宽度不足以看到消息.还有其他人遇到过这个吗?
谢谢!
我读过的所有ExtJS文档和示例都建议调用这样的超类方法:
MyApp.MyPanel = Ext.extend(Ext.Panel, {
initComponent: function() {
// do something MyPanel specific here...
MyApp.MyPanel.superclass.initComponent.call(this);
}
});
Run Code Online (Sandbox Code Playgroud)
我已经使用这种模式很长一段时间了,主要的问题是,当你重命名你的类时,你还必须改变所有对超类方法的调用.这很不方便,经常我会忘记,然后我必须追查奇怪的错误.
但是看完来源Ext.extend(),我发现,这不是我可以使用superclass()或super()该方法Ext.extend()增加了原形:
MyApp.MyPanel = Ext.extend(Ext.Panel, {
initComponent: function() {
// do something MyPanel specific here...
this.superclass().initComponent.call(this);
}
});
Run Code Online (Sandbox Code Playgroud)
在这个代码中,将MyPanel重命名为其他东西很简单 - 我只需更改一行.
但我怀疑......
我没有在任何地方看到过这种情况,旧的智慧说,我不应该依赖于无证件的行为.
我没有在ExtJS源代码中找到这些superclass()和supr()方法的单独使用.为什么在你不打算使用它们时创建它们?
也许这些方法在某些旧版本的ExtJS中使用但现在已被弃用?但它似乎是一个非常有用的功能,你为什么要弃用呢?
那么,我应该使用这些方法吗?
(这不是一个问题本身,我正在记录我使用Ext JS 3.1.0找到的解决方案.但是,如果你知道更好的解决方案,请随时回答!)
Ext JS Grid对象的Column配置没有允许自动换行文本的本机方式,但是有一个css属性可以覆盖TD网格创建的元素的内联CSS .
不幸的是,TD元素包含一个DIV包裹内容元素,并DIV设置为white-space:nowrap通过的Ext JS的样式,所以重写TDCSS没有好处.
我将以下内容添加到我的主CSS文件中,这是一个简单的修复程序,似乎不会破坏任何网格功能,但允许white-space我应用于TD的任何设置都传递给DIV.
.x-grid3-cell {
/* TD is defaulted to word-wrap. Turn it off so
it can be turned on for specific columns. */
white-space:nowrap;
}
.x-grid3-cell-inner {
/* Inherit DIV's white-space from TD parent, since
DIV's inline style is not accessible in the column
definition. */
white-space:inherit;
}
Run Code Online (Sandbox Code Playgroud)
YMMV,但它对我有用,想要把它作为一个解决方案,因为我找不到通过搜索Interwebs的工作解决方案.
我看到Ext JS中有很多例子,而不是实际创建Ext JS对象,xtype而是传入一个带有属性的对象文字.
这有什么用?如果要创建对象,性能增益在哪里(如果这是原因)?
我从数据库绑定ExtJs Gridpanel并在我的gridpanel下添加"删除"按钮.通过使用删除按钮处理程序,我删除了gridpanel上的选定记录.但是,删除后,网格不刷新(它从数据库中删除,但由于没有刷新而在网格上显示).
删除处理程序后如何刷新网格?
这是有效.JPEG图像的二进制文件.
http://pastebin.ca/raw/2314500
我曾尝试使用Python将这个二进制数据保存到图像中.
如何将此数据转换为带有extjs 4的可查看.JPEG图像?
我试过这个,但它不起作用.
data:image/jpeg;base64,+ binary data
Run Code Online (Sandbox Code Playgroud) 我有2个独立的应用程序(在一个项目中),需要2个独立的构建(sencha cmd).我被要求创建一个gradle脚本,它将为两个应用程序执行构建.
我创建了一个构建一个应用程序的任务,但是使用相同的任务构建第二个应用程序时遇到了麻烦.
这是我到目前为止:
task senchaCmdBuild (type: Exec) {
workingDir 'src/main/app/MYAPP'
commandLine 'cmd', 'c', 'sencha app build'
}
Run Code Online (Sandbox Code Playgroud)
这很好用.
当我将以下2行添加到上述任务时:
workingDir 'src/main/app/MYOTHERAPP'
commandLine 'cmd', 'c', 'sencha app build'
Run Code Online (Sandbox Code Playgroud)
第一个命令被忽略,只执行第二个命令.
那么无论如何我可以用一个任务执行两个命令吗?
extjs ×10
javascript ×4
extjs4 ×2
ajax ×1
etag ×1
extend ×1
extjs3 ×1
extjs4.1 ×1
gradle ×1
grid ×1
overriding ×1
superclass ×1
word-wrap ×1