我尝试使用CSR Javascript文件自定义SharePoint 2013中的Web部件,但是在视图中的所有更改之后,我的文本[object Object]的项目通常是List Items。什么是问题?
我的JS代码:
(function () {
/*
* Initialize the variable that store the overrides objects.
*/
var overrideCtx = {};
overrideCtx.Templates = {};
// Assign functions or plain html strings to the templateset objects:
// This template is assigned to the CustomItem function.
overrideCtx.Templates.Group = CustomGroup;
overrideCtx.Templates.Item = CustomItem;
overrideCtx.BaseViewID = 1;
overrideCtx.ListTemplateType = 100;
// Register the template overrides.
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(overrideCtx);
})();
/*
* This function builds the output for the item template.
* Uses the Context object to access announcement data.
*/
function CustomItem(ctx) {
// Build a listitem entry for every announcement in the list.
var ret = '<div style="width: 150px; border: 1px solid #333; padding: 5px;"> <div> <div style="float: left; display: inline-block;">' + ctx.CurrentItem.Title +
'</div> <div style="float: right; display: inline-block;">' + ctx.CurrentItem.TaskDueDate + '</div> </div> <div style="word-wrap: break-word;">' + ctx.CurrentItem.CategoryDescription + '</div> </div>';
return ret;
};
function CustomGroup(ctx, group, groupId, listItem, listSchema, level, expand) {
var html = '<div style="font-weight:bold; display: inline-block;">' + listItem[group] + ' ::' + '<div><ul>'+listItem+ '</ul></div>' + '</div>';
return html;
};
答案 0 :(得分:2)
您的一些变量包含对象而不是字符串。这是找出哪些内容的方法。
在设置和返回&#34; ret&#34;之间添加一些输出跟踪到您的javascript。变量。例如,在CustomItem中,您可以添加:
console.log("Title, Due Date, and Category are:);
console.log(ctx.CurrentItem.Title);
console.log(ctx.CurrentItem.TaskDueDate);
console.log(ctx.CurrentItem.CategoryDescription);
打开您的页面并使用浏览器显示控制台。 (Chrome console instructions)
在控制台中,您会看到每个处理项目的四行输出。其中一个可能会说[Object]而不是您正在寻找的字符串值。 单击[对象]左侧的三角形图标以展开对象的属性。
现在您可以看到对象结构,调整您的&#34; ret&#34;变量来获取字符串值。例如,它可能是ctx.CurrentItem.CategoryDescription.Title而不仅仅是ctx.CurrentItem.CategoryDescription