2

背景
我有一个页面,我在其中显示来自两个单独列表的两个列表视图,这两个列表都将自定义列表作为其 ListTemplate。他们得到了他们单独的 jslink 文件,因为我不希望他们看起来很像。

问题
js 链接文件针对两个列表视图,因为它们使用相同的模板。

代码

(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只针对一个特定的列表?

4

1 回答 1

0

最终选择了他在 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");
于 2015-05-18T06:39:42.657 回答