Sitecore Speak - 在 JavaScript 中设置扩展器的标题

Sitecore Speak - Set the title of an Expander in JavaScript

使用 cintelUtil,我可以很容易地在数据绑定上为大多数 SPEAK 控件设置文本。但是对于扩展器,我似乎无法设置它。 setText 无效。

需要注意的是我的Expander在一个DataRepeater项中。因此它将动态呈现尽可能多的数据。现在我正在 Expander 渲染中设置文本,但由于 DataRepeater,我需要它是动态的。

下面是绑定数据到模板的函数。 Expander 的名称是 InfoExpander。

    setupCompanyInfo: function (intelBaseUrl) {

                  providerHelper.initProvider(this.CompanyInfoProvider,
                      "companyinfo",
                      intelBaseUrl,
                      this.ExternalDataTabMessageBar);

                  providerHelper.setupDataRepeater(this.CompanyInfoProvider, this.CompanyInfoRepeater);

                  this.CompanyInfoRepeater.on("subAppLoaded", function (args) {
                      var data = args.data,
                          subapp = args.app;

                      cintelUtil.setText(subapp.InfoName, data.Name, true);
                      cintelUtil.setText(subapp.InfoExpander, data.Name, true);

                  }, this);

                  providerHelper.getListData(this.CompanyInfoProvider);
}

通过大量调试和更好地理解 Backbone,我找到了答案。

  1. 使用高级扩展器代替我使用的普通扩展器。
  2. 使用模板创建项目 /sitecore/client/Business 组件 Library/version 1/Layouts/Renderings/Containers/AdvancedExpander/AdvancedExpander 参数
  3. 在该项目中,您可以设置手风琴的参数。即是否默认打开,是否可以打开等
  4. 在 Advanced Expander 中,将数据源设置为您在步骤 3 中新创建的项目。
  5. 当高级扩展器与数据源一起使用时,在 Backbone 中会出现一个名为 "header" 的新属性。我们可以在我们的代码中设置这个属性来设置值。使用代码“subapp.InfoExpander.set("header", data.Name);”来完成那个。

setupCompanyInfo: function (intelBaseUrl) {    
    providerHelper.initProvider(this.CompanyInfoProvider,
        "companyinfo",
        intelBaseUrl,
        this.ExternalDataTabMessageBar);

    providerHelper.setupDataRepeater(this.CompanyInfoProvider, this.CompanyInfoRepeater);

    this.CompanyInfoRepeater.on("subAppLoaded", function (args) {
        var data = args.data,
            subapp = args.app;

        cintelUtil.setText(subapp.InfoName, data.Name, true);

        subapp.InfoExpander.set("header", data.Name);

    }, this);

    providerHelper.getListData(this.CompanyInfoProvider);
}