2012-07-02 27 views
1

爲什麼我不能用梅索德設置 '配置選項' SETExtJS的:設置 '配置選項' 現場被JS

set({value: 'new value',disabled:true}); 

我如何爲現場

var name = { 
    fieldLabel:'Name', 
    value: 'Test', 
    id:'id-name', 
    xtype: 'textfield', 
}; 
this.form= new Ext.FormPanel({ 
    items:[name], 
    buttons: [{ 
     text : 'set value', 
     handler: function() { 
      Ext.getCmp('id-name').set({value: 'new value',disabled:true}); 
     }] 
}); 
設置 '屬性'
+1

配置在對象構造期間使用,指示ExtJS如何創建組件的實例。你的哪部分代碼不能正確工作?將對象作爲配置或者處理程序中的set方法? – Izhaki

+0

當我設置** **值由梅索德** Ext.getCmp(「編號名」)。設置**,不改變場 i的值如何通過JSON 我只能改變設置2個或多個屬性值由** Ext.getCmp('id-name')。setValue()** –

回答

1

使用對象重置組件屬性不是Extjs設計的一部分。該配置用於創建對象,並在構造函數中首次使用時使用Extjs類系統內核中的特殊方法將其應用於對象本身,以生成getter和setter,然後從中初始化該組件。不可能做你想做的事,並得到想要的結果。在你上面的例子中,textfield被初始化爲你的配置在創建時覆蓋了組件的默認值,然後它爲某些屬性生成getter和setter,比如value,id和fieldLabel,它們需要被用來代替config對象組件已創建。爲了使你的例子工作,你需要這樣做:

var name = { 
    fieldLabel:'Name', 
    value: 'Test', 
    id:'id-name', 
    xtype: 'textfield', 
}; 
this.form= new Ext.FormPanel({ 
    items:[name], 
    buttons: [{ 
     text : 'set value', 
     handler: function() { 
      var myTextField = Ext.getCmp('id-name'); 
      myTextField.setValue('new value'); 
      myTextField.setDisabled(true); 
     }] 
});