extjs:将变量传递给FormPanel

时间:2012-02-29 06:39:47

标签: javascript extjs openlayers

我有一个功能:

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未定义的错误。

strObjsaveToJ函数之外声明。

我做错了什么?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

很简单,只需使用:

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