2012-02-29 2 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

спасибо, помог мне разобраться. 'strObj' действительно является нулевым, когда' editPanel' отображается, поэтому мне пришлось его передать. – k102

Смежные вопросы