【问题标题】:Break, Continue in ExtJs中断,在 ExtJs 中继续
【发布时间】:2015-08-19 12:34:23
【问题描述】:

我在 ExtJs 应用程序中使用 嵌套循环。我想使用break,继续下面的代码。我知道我们可以使用 return false 来打破循环,但是什么时候不能正常工作。

假设第一个(外)循环将从 1 运行到 10,第二个(内)循环将从 1 运行到 5。现在如果条件为真(1==1),那么它应该在面板中添加项目(复选框)只有一次。。添加项目后,它应该是中断,外部循环将开始继续。

注意 - 每次都会创建不同的面板(根据我完整的应用程序代码),所以如果条件为真,那么每个面板只有一个复选框。

如果有什么不清楚的地方请告诉我。

我的代码在提琴手中不起作用。我不知道为什么。根据下面的代码和我的理解,应该在按钮点击时创建两个复选框。

进程应该运行 -

  1. 1==1 为真,或者如果在内循环停止后满足条件。
  2. 2==2 为真,内部循环将停止。

       Ext.onReady(function () {
       var window = new Ext.Window({
        id: 'grdWindow',
        width: 400,
        title: 'Grid Samples',
            items: [
                {
                    xtype: 'button',
                    text: 'testing',
                    handler: function () {
    
                        var obj1 = [
                            { a: 1},
                            { a: 2},
                            { a: 3},
                            { a: 4}
                        ];
    
                        var obj2 = [
                            { a: 1 },
                            { a: 2 }
                        ];
    
                        var panel = Ext.getCmp('pnlTesting');
                        Ext.each(obj1, function (ob1) {
                            Ext.each(obj2, function (ob2) {
                                if (ob1.a == ob2.a) {
                                    panel.add({
                                        items:[
                                            {
                                                xtype: 'checkbox',
                                            }
                                            ]
                                    });
                                }
                            });
                            return false;
                        });
                    }
                },
                {
                    xtype: 'panel',
                    id: 'pnlTesting',
                    renderTo: Ext.getBody()
                }   
            ]
        }).show();
    });
    

【问题讨论】:

  • 那么在使用return false时什么不能正常工作?
  • 外循环没有启动,当我在完成内循环后使用 return false 时。如果我在完成内部循环之前使用 return false,它会给出语法错误。
  • 使用return false 或更好的小提琴来显示您的代码。返回false应该没有任何问题。
  • @DrakeEnterpriseSystems - 我在我的问题上添加了代码。它在提琴手中无法正常工作,不知道为什么。

标签: loops extjs panel break extjs5


【解决方案1】:

您在处理obj1 的第一项后立即打破了外部 循环。项目 {a: 2} 永远不会针对任何 obj2 项目进行检查。

相反,您应该打破 inner 循环,并且仅在添加复选框时:

Ext.each(obj1, function (ob1) {
    Ext.each(obj2, function (ob2) {
        if (ob1.a == ob2.a) {
            container.add({
                items:[
                    {
                        xtype: 'checkbox',
                    }
                ]
            });
            return false;
        }
    });
});

见小提琴:https://fiddle.sencha.com/#fiddle/sgb

【讨论】:

  • 是的,我明白了。这是我的小错误。谢谢
猜你喜欢
  • 2011-09-16
  • 2013-09-01
  • 1970-01-01
  • 2012-12-08
  • 2011-03-17
  • 1970-01-01
  • 2023-01-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多