2013-03-01 12 views
0

我試圖讓這個複選框獲取複選框的值,而不使用Ext.getCmp

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

給我不確定的錯誤。

UPDATE - 與Wared建議,我想這裏面myForm2

this.temp=Ext.create('myRoot.myExtApp.myForm'), {}); 
var tempV = this.temp.myCheckBox.getValue(); 

我能得到的價值,但我得到同樣的真實價值,即使我取消選中該複選框

+0

您還沒有發佈足夠的結構,我們需要了解它是如何融合在一起的。 – 2013-03-01 23:32:58

+0

爲了擴展Evan的反應 - 不可能在'this.myCheckBox'中告訴'this'的範圍是什麼。 – Izhaki 2013-03-03 16:42:08

+0

@EvanTrimboli,感謝您花時間看我的文章。請參閱我的更新。我用我的完整結構編輯了它。 – EagleFox 2013-03-04 16:00:21

回答

1

我假設您擔心由於過度使用組件查詢而導致性能損失。最小化組件查詢的一個很好的技巧可能是在閉包中定義一個新方法,以便緩存第一個調用的結果。在閉包中包裝方法的定義允許避免使用全局範圍或無用的類屬性。

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

你是對的Wared ...謝謝:) – EagleFox 2013-03-12 13:26:44

1

一種解決方案可能是:

myRoot.myExtApp.myForm.myCheckBox.getValue(); 

小心,錯誤的答案。請參閱下面的評論以獲得有效的解

+0

@wared ...謝謝你...但我仍然得到未定義的錯誤。我嘗試的另一件事是在myForm2上...我做了這個.temp = Ext.create('myRoot.myExtApp.myForm'),{});和var tempV = this.temp.myCheckBox.getValue(); ...我得到的值,但即使我取消選中框 – EagleFox 2013-03-05 15:27:55

+0

,我也得到相同的真值。對不起,我完全錯了......「myRoot.myExtApp .myForm「指的是我們需要實例的類。我需要更多細節來幫助你。你的表單被實例化的代碼如何? – leaf 2013-03-05 15:57:04

+0

謝謝你......你部分正確。我必須確保我聲明瞭父項:這個和我的擴展類所有我必須做的是... this.parent.myCheckBox.getValue(); – EagleFox 2013-03-11 19:43:14