有没有办法将ExtJS(版本4)ComboBox的下拉菜单的宽度设置为宽于实际输入框的宽度?
我有一个comboxbox,我希望大约200px,但我在结果下拉列表上分页,宽度甚至不足以显示所有分页栏的控件.
这是我创建组合的代码:
var add_combo = Ext.create('Ext.form.field.ComboBox',
{
id : 'gbl_add_combo',
store : Ext.create('Ext.data.Store',
{
remoteFilter : true,
fields : ['gb_id', 'title'],
proxy :
{
type : 'ajax',
url : 'index.php/store/get_items',
reader :
{
type : 'json',
root : 'records',
totalProperty : 'total',
successProperty : 'success'
},
actionMethods :
{
read : 'POST',
create : 'POST',
update : 'POST',
destroy : 'POST'
}
}
}),
listConfig:
{
loadingText: 'Searching...',
emptyText: 'No results found'
},
queryMode : 'remote',
hideLabel : true, …Run Code Online (Sandbox Code Playgroud) 当我应该使用initComponent比较constructor?
我一直在使用initComponent来扩展我的对象,但查看Ext.define的文档是使用构造函数来查看它们然后放置.有什么不同?
相比:
Ext.define('My.app.PanelPart2', {
extend: 'My.app.Panel',
constructor: function (config) {
this.callSuper(arguments); // calls My.app.Panel's constructor
//...
}
});
Run Code Online (Sandbox Code Playgroud)
至
Ext.define('My.app.PanelPart2', {
extend: 'My.app.Panel',
initComponent: function (config) {
Ext.apply(this, config);
this.callParent(arguments);
}
});
Run Code Online (Sandbox Code Playgroud)
我知道有些组件没有初始化(我正在看着你Ext.data.Store),这导致我只倾向于编写构造函数,因为这应该是通用的.
我用npm安装了Cordova和PhoneGap:
sudo npm install -g cordova
sudo npm install -g phonegap
Run Code Online (Sandbox Code Playgroud)
但是,两者都返回相同的错误消息:
/usr/bin/env: node: No such file or directory
Run Code Online (Sandbox Code Playgroud) 虽然我知道你不能像在C#中那样执行继承,但我已经看到它在互联网上提到它有可能.如果使用普通的JavaScript代码是不可能的话那么可以使用Ext JS吗?如果可以的话怎么样?
对于extJS和json来说,我有点新手.使用extJS发布json数据最无痛的路径是什么?我并不真正对任何GUI功能感兴趣,只是使用框架发送一些示例数据.
我研究了ExtJs如何在dom中呈现表单的字段.要在渲染字段后更改fieldLabel,我找到适当的dom元素并更改其innerHTML;
/**
* Modifies field's label afrer field is rendered.
*
* @param {object} field
* Some object that directly or indirecty extends Ext.form.Field
* @param {String} label
* New value for field's label.
*/
function setLabel(field,label){
var el = field.el.dom.parentNode.parentNode;
if( el.children[0].tagName.toLowerCase() === 'label' ) {
el.children[0].innerHTML =label;
}else if( el.parentNode.children[0].tagName.toLowerCase() === 'label' ){
el.parentNode.children[0].innerHTML =label;
}
return setLabel; //just for fun
}
//EXAMPLE:
var win = new Ext.Window({
height : 200,
width : 300,
layout : 'form',
labelAlign …Run Code Online (Sandbox Code Playgroud) 有没有办法使用Ext.app.Controller control()方法,但传入DOM查询?我有一个包含标准链接的页面,并希望为它们添加一个单击处理程序,即使它们不是作为Ext Buttons创建的.
我试过了
Ext.define('app.controller.TabController', {
extend: 'Ext.app.Controller',
init: function() {
console.log("init");
this.control({
'a': {
click: this.changeTab
}
});
},
changeTab: function() {
alert("new tab!");
}
});
Run Code Online (Sandbox Code Playgroud)
但是点击链接不会触发警报.
有没有办法用this.control指定CSS选择器?或者它只适用于组件?
有两种方法可以在extjs 4.1中使用代理(在我的例子中是服务器代理),可以将它绑定到模型或将其绑定到商店.
我对这种用法感到有点困惑:将代理绑定到商店并将其与模型联系起来有什么区别?
人们会以某种方式使用哪种情况?
我有一个ExtJs的问题combobox,考虑我有一个combobox有4个项目和select事件中的回调函数combobox.
当我要设置combobox所选值时setValue(),ExtJs不会触发select事件.
我该如何解决这个问题?
我应该自己解雇这个事件setValue()吗?
我从头开始创建ExtJS 6.2应用程序.我对这个框架很新,所以我可以使用脚手架的应用程序.
设计的应用程序应该具有单独的"插件"(在代码/包级别上)将完全分离.我们也有某种路由器,它会为每个视图名称(路径/控制器/模型/附加信息)注册一些信息.我希望它以类似于模板方法设计模式的方式工作.当我添加新的插件/模块时,我还添加了具有特定名称模式的文件 - 例如.ModuleACMEGlobalConf.我想要ExtJS应用程序(或组件/类 - 无论如何)以某种方式扫描整个类树以获取具有此类名称模式的文件,读取它们的内容然后放入我的路由器config/global namespace变量.
问题是 - 实现这一目标的最佳方法是什么?
更新:
我想要的结构:
MyAppFolder ---Module1 .....MyConfigGlobal1.js ---Module2 .....MyConfigGlobal2.js --- ---Router.js -> I want this file to scan whole 'MyAppFolder' tree, find files with *ConfigGlobal*.js pattern, read them and store in global namespace
MyConfigGlobal1.js
var config = { configProp1: 'test', configProp2: 'test2'}
Run Code Online (Sandbox Code Playgroud)
MyConfigGlobal2.js
var config = {configProp3: 'test3', configProp4: 'test4'}
Run Code Online (Sandbox Code Playgroud)
Router.js
var configsMap = EXT.SOMETHING.FIND.ME.CLASSES.FROM.TREE.WITH.NAME('*MyConfigGlobal*')
Run Code Online (Sandbox Code Playgroud)
我希望路由器加载所有东西(它可以在类级别,而不是文件级别) - 无论是一个类还是一百个.使用此解决方案,我不必更改Router.js - 只需在我正在创建的新模块中添加另一个配置类.所以没有必要重新测试以前的模块.
但如果我在路由器中有这样的东西:
var requiredConfigs = ['MyGlobalConfig1.js','MyGlobalConfig2.js']
Run Code Online (Sandbox Code Playgroud)
我即将在路由器中将此第三个文件/类添加到此列表中,这意味着该策略已损坏,我必须重新测试module1和module2,因为它们以某种方式对它们共同的代码进行了修改.