首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的JSLink脚本将无法工作

我的JSLink脚本将无法工作
EN

Stack Overflow用户
提问于 2017-08-17 01:50:00
回答 1查看 2.1K关注 0票数 0

我正在尝试使用JSLink ..finally..我遇到了一些麻烦,我似乎不能解决。对于我的第一次冒险,我选择了一些非常简单的东西来作为概念的证明。因此,我查阅了一个教程,并想出了一个简单的脚本,在每个条目的标题字段周围绘制一个框并设置文本样式。我不能让它工作。你能帮我看一下这段代码吗?我在JSLink框中使用了以下标记。

~sitecollection/site/folder/folder/file.js

~站点/文件夹/文件夹/file.js

与我尝试修改的列表视图WebPart存储在同一站点上的.js文件。该列表只有默认的“标题”列。

代码语言:javascript
复制
(function () {
            var overrideContext = {};
            overrideContext.Templates = {};
            overrideContext.Templates.Item = overrideTemplate;

            SPClientTemplates.TemplateManager.RegisterTemplateOverrides(overrideContext);
}) ();

function overrideTemplate(ctx) {
            return “<div style=’font-size:40px;border:solid 3px black;margin-bottom:6px;padding:4px;width:200px;’>” + ctx.CurrentItem.Title + “</div>”;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-26 15:36:18

看起来您似乎正在尝试覆盖上下文(ctx)项本身,而实际上您只想覆盖列表字段和显示该字段的列表视图。讲得通?

首先,将overrideContext.Templates.Item修改为overrideContext.Templates.Fields:

代码语言:javascript
复制
(function () {
            var overrideContext = {};
            overrideContext.Templates = {};
            overrideContext.Templates.Fields = {
            // Add field and point it to your rendering function
            "Title": { "View": overrideTemplate },
            };  
  SPClientTemplates.TemplateManager.RegisterTemplateOverrides(overrideContext);
        }) ();

然后,当JSLink运行时,渲染器在列表视图中查找Title字段,并应用overrideTemplate函数。

代码语言:javascript
复制
function overrideTemplate(ctx) {
            return “<div style=’font-size:40px;border:solid 3px black;margin-bottom:6px;padding:4px;width:200px;’>” + ctx.CurrentItem.Title + “</div>”;
}

就在SharePoint页面上运行多个JSLinks而言,很有可能运行多个JSLink脚本,它们只需要用竖线'|‘符号分隔即可。我经常使用SharePoint Online,我看到下面的格式一直在工作(对不起萨沙!)。

代码语言:javascript
复制
~site/yourassetfolder/yourfilename.js | ~site/yourassetfolder/anotherfilename.js

您可以同时运行任意多个脚本,只需用管道分隔它们即可。我在prem上也看到了这一点,但是你可能想把‘~ site’换成'~sitecollection‘,并确保你访问的js文件在网站集中的顶级网站!

我注意到,当在一个列表或页面上运行多个JSLinks时,因为它们都在进行客户端渲染,太多会减慢页面的速度。如果发生这种情况,您可能需要考虑将它们组合到一个JSLink脚本中,以便服务器只需调用一个文件返回给客户端,即可执行列表所需的所有呈现。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45720049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档