微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

嵌套多字段循环在 AEM JS 文件中不起作用

如何解决嵌套多字段循环在 AEM JS 文件中不起作用

我有一个包含嵌套多字段的对话框。在嵌套的多字段中,有下拉列表和其他字段(需要验证)。


对话框的详细信息:

多字段

容器(名称 = 父级)

 Multifield

      Container (name = Child)

          dropdown (class = cq-dialog-dropdown-showhide-multi)
              TextField

用于循环的Javascript代码

(function ($,document,ns) {

   const A = function () {
         console.log("In A");
      $(this).find("[data-granite-coral-multifield-name='./Child'] .coral3-Multifield-item").each(function( index ) {
         console.log("In Loop");
      })
  };

  $(document).on("change",".cq-dialog-dropdown-showhide-multi",function() {
      A();
  });

  $(document).on("dialog-ready",function() {
      A();
  });

})(Granite.$,Granite.author);

一旦对话框内容加载完毕(打开对话框时),函数 A 就会被调用

当下拉值发生变化时,函数 A 被调用


假设,我的父多字段有 1 个项目,其子多字段有 2 个项目:

Func A 在对话框打开时被调用,并且“In A In Loop In Loop”被打印在控制台中。现在,如果我更改下拉值,func A 会再次被调用,但这次只有“In A”会在控制台中打印出来。即使子项的数量仍然相同,循环也不会被执行。

不确定到底是什么问题。请指教。

解决方法

上面的代码在一行更正后开始工作:

$(this).find("[data-granite-coral-multifield-name$='Child'] .coral3-Multifield-item").each(function( index ) {

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。