在 ExtJs 中中断,继续
Break, Continue in ExtJs
我在 ExtJs 应用程序中使用嵌套循环。我想在下面的代码中使用 break, continue 。我知道我们可以使用 return false 来打破循环,但是当不能正常工作时。
假设第一个(外部)循环将从 1 到 10 运行,第二个(内部)循环将从 1 到 5 运行。现在如果条件为真 (1==1) 那么它应该只在面板中添加项目(复选框)一次。。添加项目后应该中断,外循环将开始继续。
注意 - 每次都会创建不同的面板(根据我的完整应用程序代码),因此如果条件为真,则每个面板只有一个复选框。
如果有任何不清楚的地方,请告诉我。
我的代码在 fiddler 中不工作。我不知道为什么。根据下面的代码和我的理解,应该在单击按钮时创建两个复选框。
进程应该是 运行 -
- 1==1 为真或条件满足后内循环将停止。
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();
});
您在处理 obj1
的第一项后立即打破 outer 循环。项目 {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;
}
});
});
我在 ExtJs 应用程序中使用嵌套循环。我想在下面的代码中使用 break, continue 。我知道我们可以使用 return false 来打破循环,但是当不能正常工作时。
假设第一个(外部)循环将从 1 到 10 运行,第二个(内部)循环将从 1 到 5 运行。现在如果条件为真 (1==1) 那么它应该只在面板中添加项目(复选框)一次。。添加项目后应该中断,外循环将开始继续。
注意 - 每次都会创建不同的面板(根据我的完整应用程序代码),因此如果条件为真,则每个面板只有一个复选框。
如果有任何不清楚的地方,请告诉我。
我的代码在 fiddler 中不工作。我不知道为什么。根据下面的代码和我的理解,应该在单击按钮时创建两个复选框。
进程应该是 运行 -
- 1==1 为真或条件满足后内循环将停止。
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(); });
您在处理 obj1
的第一项后立即打破 outer 循环。项目 {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;
}
});
});