2012-02-29 38 views
0

我有一个功能:ExtJS的:传递变量FormPanel中

function saveToJ(feature) { 
    var str = new OpenLayers.Format.GeoJSON(out_options).write(feature, true); 
    str = str.replace(/,/g, ', '); 
    strObj = Ext.decode(str); 
    if(strObj.properties.name == null) { 
     ... 
    } else { 
     if(!win) { 
      win = new Ext.Window({ 
       title : "Edit", 
       items : [editPanel], 
       closeAction : 'hide' 
      }); 
     } 
     win.show(); 
     } 
    } 
} 

和面板:

var editPanel = new Ext.form.FormPanel({ 
    width : 400, 
    defaults : { 
     width : 230 
    }, 
    defaultType : 'textfield', 

    items : [{ 
     fieldLabel : 'Name', 
     name : 'name', 
     allowBlank : false, 
    }], 

    buttons : [editSaveBtn, editDeleteBtn] 

}); 

我想做的事就是上使用strObj.properties.name作为value为外地我的小组。 但value: strObj.properties.name给出了一个错误,strObj未定义。

strObj声明在saveToJ函数之外。

我在做什么错了?

回答

0

它是简单,只需使用:

editPanel.getForm().findField('name').setValue(strObj.properties.name);

2

你确定你试图打开的窗口前strObj本身不为空?如果它已经在范围内,您不应该将它传递给Ext.form以便能够使用它。我会使用一个调试器,并确保它不是空的。

+0

谢谢,帮我理解。 'editPanel'渲染时'strObj'真的是空的,所以我必须通过它。 – k102 2012-03-05 07:48:03