我对模块设计模式的最佳实践有疑问.下面的代码是我们编写一些组件的方式的一个例子(我们使用ExtJs,但这不应该太重要).我们构建了很多这样的组件,我知道这与最佳实践完全不符.有任何想法清理代码?
Ext.ns("TEAM.COMPONENT");
function Foo() {
// Private vars
var privateNumber=0, myButton, privateInternalObject;
var numberField = new Ext.form.NumberField({
label : 'A NumberField!',
listeners : {
'change' : function(theTextField, newVal, oldVal) {
console.log("You changed: " + oldVal + " to: " + newVal);
}
}
});
// Some private methods
function changeNumField(someNumber) {
numberField.setValue(someNumber);
}
// Some public methods
this.publicFunctionSetNumToSomething() {
changeNumField(privateNumber);
}
/**
* Initializes Foo
*/
function init() {
// Do some init stuff with variables & components
myButton = …Run Code Online (Sandbox Code Playgroud) 在我的Ext Js解决方案中,我正在调用一个返回此JSON格式的服务
{"success":true,"filename":"spreadsheet.xlsx","file":[80,75,3,4,20,0,...(many more)]}
Run Code Online (Sandbox Code Playgroud)
如何使用文件名和字节数组(文件)的内容创建文件下载对话框?
UPDATE
所以我发现这一点开始下载
var a = window.document.createElement('a');
a.href = window.URL.createObjectURL(new Blob(data.file, { type: 'application/octet-stream' }));
a.download = data.filename;
// Append anchor to body.
document.body.appendChild(a)
a.click();
// Remove anchor from body
document.body.removeChild(a)
Run Code Online (Sandbox Code Playgroud)
到目前为止很好
但我得到的文件已损坏所以我怀疑我需要编码/解码文件变量?
我有一个网格面板我需要显示/隐藏网格面板中的列,具体取决于复选框的值.如果选中该复选框,我需要在网格中显示列,如果未选中,我需要隐藏网格中的列.
这是我的代码
var chkEnableDisplayResponsibilityForAction = '<%=Session["chkEnableDisplayResponsibilityForAction"]%>';
var flags = Boolean.parse(chkEnableDisplayResponsibilityForAction);
var flags1 = !Boolean.parse(chkEnableDisplayResponsibilityForAction)
var colModel = new Ext.grid.ColumnModel([
{ header: "PricePlanID", width: 100, sortable: true, dataIndex: 'PricePlanID', hidden: flags, hideable: flags1 },
]);
Run Code Online (Sandbox Code Playgroud)
当我刷新页面时,我无法切换列,具体取决于复选框的值.但是当我登录并注销时,我能够看到网格面板中的更改.任何人都可以帮我刷新网格面板中的列值吗?
我想从extjs 3迁移到extjs 4.我在rails 3中测试了示例 Extjs 4示例.我观察到extjs 4中的页面渲染时间非常慢.我不知道是什么原因.
谁能告诉我,背后的原因是什么?或者
我的应用程序有任何问题吗?和
我应该怎么做,以提高ExtJS的4的演出内容吗?
我有一个带有一些组件的ToolBar(TextFields和Buttons),我想在其他组件之前动态添加一个组件(例如TextField).
我尝试tbBar.add(myComponent);没有成功.
任何的想法?
我想知道如何在点击ExtJs中的特定节点时检查树的兄弟节点.
我为每个节点都给了id,我可以访问一个被点击的节点的id.那么我该如何继续自动检查子节点?
有人请帮帮我..
性能Ext.get()和document.getElementById()性能有什么区别?会Ext.get()慢一些,因为它可以在内部调用document.getElementById()?或者使用有什么特别的优势Ext.get()吗?
我想构建一个ExtJS FormPanel,允许用户使用拖放重新排序字段集列表.
我看到通过使用draggable使得字段集可以移动非常容易:true,但是如何设置dropzone?我试图效仿一些例子,但运气不好.
MyApp.FormPanel = Ext.extend(Ext.FormPanel,{
title: 'Fields',
fieldSetCount: 0,
constructor: function(config){
Ext.apply(this, config);
this.tbar = [{
text: 'Add Field Set',
handler: this.addFieldSet,
scope: this
}];
MyApp.FormPanel.superclass.constructor.call(this, config);
},
addFieldSet: function(){
this.add({
xtype: 'fieldset',
title: 'Fieldset ' + this.fieldSetCount++,
draggable: true
});
this.doLayout();
},
});
Run Code Online (Sandbox Code Playgroud) 我正在使用Ext Js 3.4.我在使用时遇到了问题myform.getForm.getValues()
emptytext 也在请求中发送.
以下是代码片段
myForm = new Ext.FormPanel({
id: 'myForm ',
items: [
{
region:'center',
border:false,
items:[center_one]
},{
region:'west',
border:false,
items :[west_one]
},{
region:'east',
border:false,
items :[east_one]
},{
region:'south',
layout:'table',
iborder:false,
items: [south_one]
}
]
});
var west_one= new Ext.form.FieldSet({
width: 282,
height:250,
layout: 'table',
items: [{
id: 'form1',
layout: 'form',
items: [field1]
},{
id: 'form2',
layout: 'form',
items: [field2]
}]
});
var field1 = new Ext.form.ComboBox({
fieldLabel: 'Field',
width: 150,
name: 'field1',
cls: 'fields field1',
id: …Run Code Online (Sandbox Code Playgroud)