我最近开始与SharePoint中的JSLinks一起工作,并且目前我正在为这里的某些东西拼命挣扎,并且多小时的浏览和搜索对我而言并没有真正帮助到目前为止所以我希望你也可以。我有一个激活了Like-Feature的SharePoint列表。我想使用jsLink以不同的方式呈现LikesCount-Column(图像基本查看展示了开箱即用的外观和看起来我想去的)在SharePoint列表中自定义“Like”按钮
基本上是我所做的是我看着基本代码,将其带到模板引擎并使用以下代码替换SharePoint中的模板。正如你在第二张图片中看到的那样,它呈现得很好,我放弃了事件处理。因此,当我点击Like-Button时,将不会发送Web-Request,并且该项目将不被喜欢。
会很高兴,如果有人可以帮助我
(function(){
\t var inCtx = {
\t \t Templates: {
\t \t \t Fields: {
\t \t \t \t 'LikesCount':{
\t \t \t \t \t 'View' : LikesCount
\t \t \t \t } \t
\t \t \t }
\t \t },
\t }; \t SPClientTemplates.TemplateManager.RegisterTemplateOverrides(inCtx);
\t function LikesCount(itemCtx){
\t \t var tmplParams = {
\t \t \t ElementId: itemCtx.CurrentItem.ID,
\t \t \t Title: '',
\t \t \t LikesCount : itemCtx.CurrentItem.LikesCount
\t \t };
\t \t var likedByIds = [];
\t \t $.each(itemCtx.CurrentItem.LikedBy, function(index){
\t \t \t likedByIds.push(parseInt(this.id));
\t \t \t tmplParams.Title += this.title;
\t \t \t if(index !== itemCtx.CurrentItem.LikedBy.length-1){
\t \t \t \t tmplParams.Title += this.title +', '
\t \t \t }
\t \t })
\t \t var result = '';
\t \t if(likedByIds.indexOf(itemCtx.CurrentUserId) !== -1){
\t \t \t tmplParams.ImageLink = '***/images/LikeButtonActive.png'
\t \t \t result = $('.likes-count[version="0.1"]').tmpl(tmplParams).html();
\t \t } else {
\t \t \t tmplParams.ImageLink = '***/images/LikeButtonInactive.png'
\t \t \t result = $('.likes-count[version="0.1"]').tmpl(tmplParams).html();
\t \t }
\t \t return result;
\t }
})();
<script class="likes-count" version="0.1" type="text/x-jQuery-tmpl">
\t <span id="root-likesElement-{{html ElementId}}">
\t \t <a href="javascript:;" id="likesElement-{{html ElementId}}" class="ms-secondaryCommandLink"><img class="like-button" src="{{html ImageLink}}" /></a>
\t \t <span title="{{html Title}}" class="ms-comm-likesMetadata ms-metadata">
\t \t \t <span class="ms-comm-likesCount ms-comm-reputationNumbers">{{html LikesCount}}</span>
\t \t </span>
\t
\t </span>
</script>
完美。你说得对,这种方法比重建整个领域更加精简。非常感谢! – Chris