在ExtJS panel
中,我需要将所有项目的值(例如textfield
,pathfield
)设置为空白。我不想将每个单独项目的值设置为空白,而是将整个面板设置为一次。
我能够获得物品清单
function getAllChildren (panel) {
/*Get children of passed panel or an empty array if it doesn't have thems.*/
var children = panel.items ? panel.items.items : [];
/*For each child get their children and concatenate to result.*/
CQ.Ext.each(children, function (child) {
children = children.concat(getAllChildren(child));
});
return children;
}
但如何为整个面板设置为空白?请说明在这种情况下需要做些什么。
答案 0 :(得分:1)
实际上,不可能同时使用一个班轮。您的方法返回的纯粹是一个对象数组。事实上,如果存在这样的语法,它无论如何都会迭代所有字段。
虽然清除所有字段,但使用您提出的方法非常简单。只需迭代它们并调用reset
方法。介意一些(特别是自定义)小部件可能无法处理它。
var fields = getAllChildren(panel);
CQ.Ext.each(fields, function(field) {
if (child.reset) {
child.reset();
}
});
您的getAllChildren
代码中有类似的循环 - 您可能会在同一位置重置字段。
该方法在Field
类型中定义,通常是每个对话框小部件的超类型。您可以阅读更多here。