我正试图获得此复选框的价值
Ext.define('myRoot.myExtApp.myForm', {
extend: 'Ext.form.Panel',
layout: {
type: 'vbox',
align: 'stretch'
},
scope: this,
constructor: function() {
this.callParent(arguments);
this.myFieldSet = Ext.create('Ext.form.FieldSet', {
scope: this,
columnWidth: 0.5,
collapsible: false,
defaultType: 'textfield',
layout: {
type: 'hbox', align: 'stretch'
}
});
this.mySecondForm = Ext.create('myRoot.myExtApp.myForm2', {
scope: this,
listener: this,
margin: '1 3 0 0'
});
this.myCheckBox = Ext.create('Ext.form.Checkbox', {
scope: this,
//id: 'myCheckBox',
boxLabel: 'Active',
name: 'Active',
checked: true,
horizontal: true
});
this.myFieldSet.add(this.mySecondForm);
this.myFieldSet.add(this.myCheckBox);
this.add(this.myFieldSet);
}
});
如你所见,我有另一种表格
Ext.define('myRoot.myExtApp.myForm2', {
我有一个处理程序,应该从“myForm”
获取复选框的值如何在不使用Ext.getCmp的情况下从Form2获取复选框的值?我知道如果我这样做,我可以获得复选框的值
Ext.getCmp('myCheckBox').getValue();
但使用
this.myCheckBox.getValue();
给我未定义的错误。
更新 - 提出Wared建议我在myForm2中尝试了这个
this.temp=Ext.create('myRoot.myExtApp.myForm'), {});
var tempV = this.temp.myCheckBox.getValue();
我能够获得该值,但即使取消选中该框,我也能得到相同的真值
答案 0 :(得分:1)
一种解决方案可能是:
myRoot.myExtApp.myForm.myCheckBox.getValue();
小心,错误的答案。请参阅以下评论以获取有效的解决方案。
答案 1 :(得分:1)
我假设您担心因过度使用组件查询而导致性能下降。最小化组件查询的一个很好的技巧可能是在闭包内定义一个新方法,以便缓存第一个getCmp
调用的结果。在闭包内包装方法的定义允许避免使用全局作用域或无用的类属性。
getMyCmp: function (cmp) {
// "cmp" does not exist outside this function
return function () {
return cmp = cmp || Ext.getCmp('#myCmp');
};
}()