我在ExtJs应用程序中使用嵌套循环。我想使用break,继续下面的代码。我知道我们可以使用return false来断开循环但是什么时候不能正常工作。
假设第一个(外部)循环将从1到10运行,第二个(内部)循环将从1到5运行。现在如果条件为真(1 == 1),则应在面板中添加项目(复选框)只有一次。。添加项目后,它应该是中断,外部循环将继续开始。
注意 - 每次创建不同的面板(根据我的完整应用程序代码),如果条件为真,那么每个面板只有一个复选框。
如果有任何不清楚的地方,请与我们联系。
我的代码在fiddler中不起作用。我不知道为什么。根据以下代码和我的理解,应该在按钮单击时创建两个复选框。
应该运行流程 -
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();
});
答案 0 :(得分:1)
在处理obj1
的第一项后,您正在打破外部循环。永远不会针对任何{a: 2}
项目检查项目obj2
。
相反,您应该打破内部循环,并且仅在添加复选框时:
Ext.each(obj1, function (ob1) {
Ext.each(obj2, function (ob2) {
if (ob1.a == ob2.a) {
container.add({
items:[
{
xtype: 'checkbox',
}
]
});
return false;
}
});
});