0

我从字段集中删除项目有一个奇怪的问题。我的应用程序成功添加了新的文本字段字段集项目,但是当我删除()时,我的应用程序屏幕卡住了,而我的谷歌浏览器没有任何错误。这是我的源视图js

Ext.define('qms.view.QC23', {
    extend: 'Ext.form.FormPanel',
    alias: 'widget.QC23View',
    id: 'QC23View',
    requires: ['Ext.form.FieldSet', 'Ext.Label'],
    config: {
        items: [
{
                        xtype: 'fieldset',
                        //defaults: { labelAlign: 'top' },
                        Id:'defectAdd',
                        layout:{

                        },
                        items: [
                            {
                                xtype: 'button',
                                text: 'New Defect',
                                id: 'DefectQC23Button',
                                ui: 'action'
                            },
                            {
                                xtype: 'button',
                                text: 'Remove Defect',
                                id: 'RemoveQC23Button',
                                ui: 'action'
                            }
                        ]
                    }
]
}

和我的控制器

Ext.define('qms.controller.QC23con', {
    extend: 'Ext.app.Controller',
    config: {
        refs: {
            addDefectButton:'#DefectQC23Button',
            rmDefectButton:'#RemoveQC23Button'

        },
        control: {
            addDefectButton:{
                tap: 'addDefect'
            },
            rmDefectButton:{
                tap: 'removeDefect'
            },
        }
    },
    addDefect: function(button){        
        button.up('fieldset').add({
        xtype: 'textfield',
        name: 'MyField-' + button.up('fieldset').length
        });
        //Ext.getCmp('defectAdd').doLayout();
    },
    removeDefect: function(button){
        button.up('fieldset').remove(button.up('fieldset').items.items[0]);
    }

添加项目的功能工作正常,但是当我删除项目时,我的屏幕卡住了。我正在使用谷歌浏览器进行测试。

请给我解决这个问题。谢谢。

4

1 回答 1

0

我注意到您在从字段集中删除项目之前没有检查 xtype。该代码可能会删除按钮本身,在这种情况下,它可能会导致您的屏幕冻结。我创建了一个简单的 sencha fiddle https://fiddle.sencha.com/#fiddle/4tf来完成您想要完成的工作。

用这个替换 removeDefect 函数:

var lastItem = button.up('fieldset').items.items.length-1;
if(button.up('fieldset').items.items[lastItem].xtype ==='textfield')
    button.up('fieldset').remove(button.up('fieldset').items.items[lastItem]);
于 2014-04-08T20:33:41.850 回答