在我的SharePoint上,有一个网站,其中根据用户选择的JavaScript和CSOM加载了单个列表项。这个列表项在其列表定义中总共定义了约60个属性。通过JS&CSOM更新后,SharePoint listitem属性会丢失
在HTML输入字段中,用户可以在jQuery将所加载的属性填充到相应的输入字段后修改大部分属性。当“保存”在按下按钮时,属性从通过jQuery输入收集并放入简单JS-对象(itemProps
):
var itemprops = {
'foo': $('#foo-input').val(),
'bar': $('#bar-input').val()
}
然后,下面的函数被调用:
function updateListItem(itemProps, onItemAdded, onItemError) {
var list = web.get_lists().getByTitle('ListTitle');
var listItem = list.getItemById(id);
for (var propName in itemProps) {
if (itemProps.hasOwnProperty(propName)) {
listItem.set_item(propName, itemProps[propName]);
}
}
listItem.update();
context.executeQueryAsync(
function() {
onItemAdded(listItem);
},
onItemError
);
}
调试表明,itemProps
中的数据是有效的。但有时(我无法确定性地重现该效果)某些属性会丢失,当我查看SharePoint列表中的列表项时,某些属性为空,就好像itemProps与该属性关联的null
或""
。当我第一次尝试调试这个时,我只是简单地创建了一个项目并保存了它(正确地使用了所有的属性),然后加载并保存了一次而没有修改,但是一些属性丢失了。 其他属性得到正确更新,有时这根本不会发生。
有没有什么办法,以确保这种效果简化版,发生或至少检测到它,然后重试更新数据,用户的输入迷失过吗?