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,我找到了答案。
- 使用高级扩展器代替我使用的普通扩展器。
- 使用模板创建项目 /sitecore/client/Business 组件 Library/version 1/Layouts/Renderings/Containers/AdvancedExpander/AdvancedExpander 参数
- 在该项目中,您可以设置手风琴的参数。即是否默认打开,是否可以打开等
- 在 Advanced Expander 中,将数据源设置为您在步骤 3 中新创建的项目。
- 当高级扩展器与数据源一起使用时,在 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);
}
使用 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,我找到了答案。
- 使用高级扩展器代替我使用的普通扩展器。
- 使用模板创建项目 /sitecore/client/Business 组件 Library/version 1/Layouts/Renderings/Containers/AdvancedExpander/AdvancedExpander 参数
- 在该项目中,您可以设置手风琴的参数。即是否默认打开,是否可以打开等
- 在 Advanced Expander 中,将数据源设置为您在步骤 3 中新创建的项目。
- 当高级扩展器与数据源一起使用时,在 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);
}