我尝试在ServiceNow中创建一个窗口小部件,该窗口小部件根据用户的位置和职业显示与用户相关的所有知识文章。有些情况下应该返回多个KA文章,我想动态创建一个表格,列出所有适用的文章。下面是我的服务器脚本,我从HR_Profile中检索用户的职业和位置。然后,我打开一个空数组,在那里我遍历每个适合过滤器的知识文章,获取KA编号和简短描述,然后将其推入我的空数组:
var gr = new GlideRecord('hr_profile');
gr.addQuery('user', gs.getUserID());
gr.query();
if(gr.next())
{
var occ = gr.occupation;
var loc = gr.user.location;
}
var kaArray = [];
var ka = new GlideRecord('x_81991_knowledge');
ka.addQuery('workflow_state', 'Published');
ka.addQuery('kb_category.label', 'Benefits');
var qc1 = ka.addQuery('occupation', 'CONTAINS', occ);
qc1.addOrCondition('location', 'CONTAINS', loc);
ka.orderByDesc('sys_updated_on');
ka.query();
while(ka.next()) {
obj = {number: ka.number,
short_desc: ka.short_description,
url: 'kb_view.do?sysparm_article=' + ka.number}
kaArray.push(obj);
}
我的问题是如何访问数组并循环创建一个包含三列(数字,描述,URL)的HTML表格以及与该个人相关的所有文章?
感谢。
答案 0 :(得分:1)
嗯,这看起来与您在StackOverflow上发表的帖子高度相似。我认为他们是相关的。大家都知道,这个上下文信息,如果在该帖子上提供,可能已经成功,所以我可以提供一个更完整的答案来帮助你更好。
要使小部件执行您要查找的内容,您需要做的是在小部件的HTML中使用<div>
标记,并使用ng-repeat
属性。在服务器端代码中,您需要使用data
对象来填充窗口小部件的列,您可以在无数的窗口小部件中看到,这些窗口小部件包含使用Angular呈现的表的现有示例。
(您也可以使用<table>
,只需重复列标记。实际上有很多其他方法可以做到这一点。
这是一个小部件,可能非常接近你想要完成的任务,你只需稍微调整一下(你可以部分地做,使用我在回答你的另一个问题时提供的代码):
的https:// <强> your_instance 强>。服务-now.com / nav_to.do URI = sp_widget.do sys_id = 3c817b52cb30020000f8d856634c9cfb
(这假设你在伊斯坦布尔,可能是赫尔辛基)。