gpt4 book ai didi

javascript - 不使用 Ext.getCmp 获取复选框值

转载 作者:行者123 更新时间:2023-12-02 18:57:46 27 4
gpt4 key购买 nike

我正在尝试获取此复选框的值

 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();

我能够获取该值,但即使取消选中该框,我也会得到相同的真实值

最佳答案

我假设您担心由于过度使用组件查询而导致性能损失。最小化组件查询的一个好技巧是在闭包内定义一个新方法,以便缓存第一个 getCmp 调用的结果。将方法的定义包装在闭包内可以避免使用全局范围或无用的类属性。

getMyCmp: function (cmp) { 
// "cmp" does not exist outside this function
return function () {
return cmp = cmp || Ext.getCmp('#myCmp');
};
}()

关于javascript - 不使用 Ext.getCmp 获取复选框值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15164463/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com