在CQ中,如何将Panel中所有项的值设置为空白

时间:2015-08-17 10:11:23

标签: javascript extjs cq5 aem

在ExtJS panel中,我需要将所有项目的值(例如textfieldpathfield)设置为空白。我不想将每个单独项目的值设置为空白,而是将整个面板设置为一次。

我能够获得物品清单

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;
}

但如何为整个面板设置为空白?请说明在这种情况下需要做些什么。

1 个答案:

答案 0 :(得分:1)

实际上,不可能同时使用一个班轮。您的方法返回的纯粹是一个对象数组。事实上,如果存在这样的语法,它无论如何都会迭代所有字段。

虽然清除所有字段,但使用您提出的方法非常简单。只需迭代它们并调用reset方法。介意一些(特别是自定义)小部件可能无法处理它。

var fields = getAllChildren(panel);
CQ.Ext.each(fields, function(field) {
   if (child.reset) {
      child.reset();
   }
});

您的getAllChildren代码中有类似的循环 - 您可能会在同一位置重置字段。

该方法在Field类型中定义,通常是每个对话框小部件的超类型。您可以阅读更多here