私は最近、SharePoint で JSLinks を使い始めました。現在、ここで何かに苦労しています。数時間ブラウジングと検索を行っても、これまでのところあまり役に立ちませんでした。Like-Feature が有効になっている SharePoint リストがあります。jsLink を使用して、LikesCount-Column を別の方法でレンダリングしたかった (基本的な外観の画像は、箱から出してすぐに見える列と、私が求めていた外観を示しています)
基本的に私がしたことは、基本的なコードを見て、それをテンプレート エンジンに取り、次のコードを使用して SharePoint のテンプレートを置き換えることです。2 番目の画像でわかるように、問題なくレンダリングされるので、イベント処理を緩めます。そのため、Like ボタンをクリックしても、Web リクエストは送信されず、アイテムは気に入られません。
誰かが私を助けてくれたらとても幸せです
(function(){
var inCtx = {
Templates: {
Fields: {
'LikesCount':{
'View' : LikesCount
}
}
},
}; SPClientTemplates.TemplateManager.RegisterTemplateOverrides(inCtx);
function LikesCount(itemCtx){
var tmplParams = {
ElementId: itemCtx.CurrentItem.ID,
Title: '',
LikesCount : itemCtx.CurrentItem.LikesCount
};
var likedByIds = [];
$.each(itemCtx.CurrentItem.LikedBy, function(index){
likedByIds.push(parseInt(this.id));
tmplParams.Title += this.title;
if(index !== itemCtx.CurrentItem.LikedBy.length-1){
tmplParams.Title += this.title +', '
}
})
var result = '';
if(likedByIds.indexOf(itemCtx.CurrentUserId) !== -1){
tmplParams.ImageLink = '***/images/LikeButtonActive.png'
result = $('.likes-count[version="0.1"]').tmpl(tmplParams).html();
} else {
tmplParams.ImageLink = '***/images/LikeButtonInactive.png'
result = $('.likes-count[version="0.1"]').tmpl(tmplParams).html();
}
return result;
}
})();
<script class="likes-count" version="0.1" type="text/x-jQuery-tmpl">
<span id="root-likesElement-{{html ElementId}}">
<a href="javascript:;" id="likesElement-{{html ElementId}}" class="ms-secondaryCommandLink"><img class="like-button" src="{{html ImageLink}}" /></a>
<span title="{{html Title}}" class="ms-comm-likesMetadata ms-metadata">
<span class="ms-comm-likesCount ms-comm-reputationNumbers">{{html LikesCount}}</span>
</span>
</span>
</script>