更新Ext.form.Panel上的值



下面应该是微不足道的,但我不能让它工作:我有如下Ext.form.Panel:

Ext.define('EvaluateIt.view.SiteEvaluationForm', {
    extend: 'Ext.form.Panel',
    alias : 'widget.siteEvaluationForm',
    id: 'evaluationId',
    requires: [
        'Ext.form.Panel',
        'Ext.form.FieldSet',
        'Ext.field.Url',
        'Ext.field.Select',
        'Ext.field.Hidden'
],
    config: {
        // We give it a left and top property to make it floating by default
        left: 0,
        top: 0,
        // Make it modal so you can click the mask to hide the overlay
        modal: true,
        hideOnMaskTap: true,
        // Set the width and height of the panel
        //width: 400,
        //height: 330,
        width: Ext.os.deviceType == 'Phone' ?  screen.width : 300,
        height: Ext.os.deviceType == 'Phone' ?  screen.height : 500,
        scrollable: true,
        layout: {
            type: 'vbox'
        },
        defaults: {
            margin: '0 0 5 0',
            labelWidth: '40%',
            labelWrap: true
        },
        items: [
            {   
                xtype: 'textfield',
                name: 'address',
                label: 'Address',
                itemId: 'address' 
            },   
            {
                xtype: 'hiddenfield',
                itemId: 'imageUriId',
                name: 'imageUri'
            },
            {
                xtype: 'button',
                itemId: 'siteImage',
                text: 'Take Photo'
            },
            {
                xtype: 'button',
                itemId: 'save',
                text: 'Save'
            }   
        ]
    }
});

从列表视图中的onItemDisclosure打开,因此有一个记录绑定到它。

当点击'siteImage'按钮时,用户从图片库中选择一张图像,并将uri写入临时存储以进行处理。这部分可以正常工作。

我需要做的是:当上面表单中的'save'被点击时,我需要从临时存储中获取uri,并将其写入上述表单中所有值保存到的相同存储中。

要做到这一点,我有以下方法:
onSaveSiteEvaluation: function(button) {
    console.log('Button Click for Save');
    //var form = button.up('panel');
    var form = Ext.getCmp('evaluationId');
    //get the record 
    var record = form.getRecord();
    //get the form values
    //var values = form.getValues();
    // return a clone for updating of values
    var values = Ext.clone(form.getValues());
    //if a new siteEvaluation
    if(!record){
        var newRecord = new EvaluateIt.model.SiteEvaluation(values);
        Ext.getStore('SiteEvaluations').add(newRecord);
    }
    //existing siteEvaluation
    else {
        // get image uri from temp store
        var images = Ext.create('EvaluateIt.store.ImageQueue');
        images.queryBy(function(record,id){
            images = Ext.getStore(images);
            if (images.getCount() > 0) {
                var uri  = record.get('src');
                //  image = Ext.getCmp('imageUri');
                //image = form.setValue(uri);
                //form.getCmp('imageId').setValue(uri);
                console.log('URI: ' +  uri);
                // THIS DOES NOT WORK!!
                form.setValues({
                    imageUri: uri 
                })  
        //record.set('imageUri',uri)
                console.log('imageUri: '+ record.get('imageUri'));
             }
         });
         // do stuff
         record.set(values);
    }
    form.hide();
    //save the data to the Web local Storage
    Ext.getStore('SiteEvaluations').sync();
},

除了我将uri的值写入

形式之外,此方法中的所有内容都有效
form.setValues({
    imageUri: uri 
})

我试过使'uriImage'作为隐藏字段和文本字段的xType,我试过克隆的值从表单等所有的绝对没有运气更新实际属性imageUri在商店(注:所有其他形式的值更新只是好)。我错过了什么?谢谢!

如此:

images.queryBy(function(iRecord,id){
    images = Ext.getStore(images);
    if (images.getCount() > 0) {
        var uri  = iRecord.get('src');
        // update store with URI
        form.setValues({
            imageUri: uri 
        })
        values = form.getValues();
        record = form.getRecord();
            }
    });
    // do stuff
    record.set(values);
结局好一切都好!

因为Ext.form.Panel没有setValue方法。你首先需要得到基本的形式:

form.getForm().setValue();

UPDATE:我的错,我正在看ExtJs文档,而不是Sencha Touch。你的表单有setValue方法

呼叫setValues()后,可以再呼叫getRecord()吗?看起来你的record内部变量被定义了两次。这应该不是问题,但是…

相关内容

  • 没有找到相关文章

最新更新