在我的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
或""
。當我第一次嘗試調試這個時,我只是簡單地創建了一個項目並保存了它(正確地使用了所有的屬性),然後加載並保存了一次而沒有修改,但是一些屬性丟失了。 其他屬性得到正確更新,有時這根本不會發生。
有沒有什麼辦法,以確保這種效果簡化版,發生或至少檢測到它,然後重試更新數據,用戶的輸入迷失過嗎?