制作jslink目标特定列表
Making jslink target specific list
背景
我得到一个页面,其中显示来自两个单独列表的两个列表视图,这两个列表都将自定义列表作为其 ListTemplate。他们有单独的 jslink 文件,因为我不想让他们看起来很相似。
问题
js link 文件针对两个列表视图,因为它们使用相同的模板。
代码
(function () {
var listContext = {};
listContext.Templates = {};
listContext.ListTemplateType = 100;
listContext.Templates.Header = "<div><ul>";
listContext.Templates.Footer = "</ul></div>";
listContext.Templates.Item = LinkTemplate;
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(listContext);
})();
问题
有没有办法让js只针对特定的列表?
最终采用了他在 myfatblog.co.uk 上撰写的 Paul Hunts 解决方案。 http://www.myfatblog.co.uk/index.php/2013/09/listview-web-part-issues-with-jslink-and-display-templates-a-solution/
脚本最终看起来像这样,我将它粘贴到 jslink 函数中,我在其中定义了要覆盖的 listContext。
// Override the RenderListView once the ClientTemplates.JS has been called
ExecuteOrDelayUntilScriptLoaded(function(){
// Copy and override the existing RenderListView
var oldRenderListView = RenderListView;
RenderListView = function(ctx,webPartID)
{
// Check the title and set the BaseViewId
if (ctx.ListTitle == "List")
ctx.BaseViewID = "list";
//now call the original RenderListView
oldRenderListView(ctx,webPartID);
}
},"ClientTemplates.js");
背景
我得到一个页面,其中显示来自两个单独列表的两个列表视图,这两个列表都将自定义列表作为其 ListTemplate。他们有单独的 jslink 文件,因为我不想让他们看起来很相似。
问题
js link 文件针对两个列表视图,因为它们使用相同的模板。
代码
(function () {
var listContext = {};
listContext.Templates = {};
listContext.ListTemplateType = 100;
listContext.Templates.Header = "<div><ul>";
listContext.Templates.Footer = "</ul></div>";
listContext.Templates.Item = LinkTemplate;
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(listContext);
})();
问题
有没有办法让js只针对特定的列表?
最终采用了他在 myfatblog.co.uk 上撰写的 Paul Hunts 解决方案。 http://www.myfatblog.co.uk/index.php/2013/09/listview-web-part-issues-with-jslink-and-display-templates-a-solution/
脚本最终看起来像这样,我将它粘贴到 jslink 函数中,我在其中定义了要覆盖的 listContext。
// Override the RenderListView once the ClientTemplates.JS has been called
ExecuteOrDelayUntilScriptLoaded(function(){
// Copy and override the existing RenderListView
var oldRenderListView = RenderListView;
RenderListView = function(ctx,webPartID)
{
// Check the title and set the BaseViewId
if (ctx.ListTitle == "List")
ctx.BaseViewID = "list";
//now call the original RenderListView
oldRenderListView(ctx,webPartID);
}
},"ClientTemplates.js");