DatePicker在控制器中选择捕获事件
ExtJS 4.2 DatePicker Multiselect catch event in controller
我正在使用MVC架构在ExtJS 4.2中创建一个自定义日期选择器。这个想法是,组件允许用户一次输入/选择多个日期,但我有几个问题:
- 我的
selectedDates
变量是一个对象,我不知道如何使它返回日期列表。 - 当你打开一个新窗口时,选择器会记住上次窗口打开时之前选择的日期。我认为,当你
close
在Ext
的一个窗口,组件是销毁?
当你在Ext中define
一个类时,你在配置中指定的属性存在于原型链中,而不是对象实例本身。除非在调用组件的构造函数时为selectedDates
分配了一个新对象,否则您将相同的引用修改为单个对象。当你close
一个窗口时,对象被销毁,但是原型/类定义仍然存在。
constructor
方法中解决这些问题。例如:Ext.define('MyClass', {
extend: 'Ext.Component',
// ...
selectedDates: null,
constructor: function(args){
args = args || {};
Ext.applyIf(args, {
selectedDates: {}
});
this.callParent([args]);
}
});
得到你的selectedDates
是容易的部分,这只是一个例子,迭代你的对象,并将值添加到一个数组-进一步说,你唯一缺少的是一个itemId
在你的选择器组件,这样你就可以很容易地获得一个引用,例如:
Ext.define('HighlightableDatePicker', {
// ...
getSelectedDates: function(){
var dates = [];
Ext.iterate(this.selectedDates, function(key, val){
dates.push(val);
});
dates.sort();
return dates;
}
});
// Ext.Window items config...
{
xtype: 'highlightdate',
itemId: 'datePicker'
},
{
xtype: 'button',
text: 'Get Selected Dates',
handler: function(){
var picker = this.up('window').down('#datePicker');
console.log( picker.getSelectedDates() );
}
}
»更新小提琴
注意:没有MVC在你的fiddle,但同样的原则适用-你已经有一个handleSelectionChanged
方法,你可以触发一个自定义事件,例如:
handleSelectionChanged: function(cmp, date){
// after existing logic ...
this.fireEvent('dateselection', this.getSelectedDates());
}
现在选择器组件有一个itemId
,您的控制器将能够侦听事件
相关文章:
- 选择onclick事件jquery
- 如何在触发事件后选择select选项
- 什么是“;选择“;然后触发事件
- 类似jQuery的主干事件选择器
- 用于关闭和打开的Jquery事件选择下拉菜单,而不是在更改时
- 点击事件:选择要按 ID 点击的项目
- 如何在 HTML 中使用 OnClick 事件<选择>
- 将事件选择器委托为第 n 个元素不起作用
- jQuery 单击事件选择选项不适用于 jQuery Mobile 框架
- extjs数据视图未找到事件选择
- 使用jQuery为触摸事件选择区域
- 如何调用不同的事件选择并点击jstree(vakata)
- jQuery点击事件选择元素不工作的期望在Chrome 54
- Javascript动态onChange事件选择
- 点击事件选择器语法
- 使用mouseup事件选择文本,使用调用函数选择dbclick事件
- 如何使用Javascript使onclick事件选择被单击的元素的id ?
- OfficeJs/WordJs通过索引和绑定单击事件选择文本范围
- jQuery/javascript事件选择展开/折叠
- JS后添加<在现有的
- 中,我无法使用click事件选择它