我正在爲客戶端創建一個Angular Sharepoint託管的應用程序。 我有一個列表在主機網站,我將存儲信息,輸入將在應用程序。 我想從主機網站列表的項目獲得版本歷史,很幸運。 我已經嘗試了兩種選擇:
的SPService選項:
SharePoint 2013應用程序,主機Web列表項上的訪問版本歷史
$().SPServices({
operation: "GetVersionCollection",
async: false,
strlistID: "TestList",
strlistItemID: 36,
strFieldName: "Description",
completefunc: function (xData, Status) {
$(xData.responseText).find("Version").each(function (i) {
console.log("Name: " + $(this).attr("Description") + " Modified: " + $(this).attr("Modified"));
});
}
});
上面的代碼不工作,因爲名單是在主機的網絡,任何人都知道如何配置上面的代碼來訪問主機網絡清單?
的「Versions.aspx」選項:
function getItemVersions(url,listId,itemId,success)
{
var versionsUrl = url + '/_layouts/versions.aspx?list=' + listId + '&ID=' + itemId;
$.get(versionsUrl, function(data) {
var versionEntries = parseVersionsData(data);
success(versionEntries);
});
}
function parseVersionsData(data){
var entries = {};
var versionList = $(data).find('table.ms-settingsframe');
versionList.find('> tbody > tr').each(function(i){
if(i > 0 && (i) % 2 == 0) {
var verRow = $(this); //get version row
var propsRow = verRow.next(); //get properties row
var versionLabel = verRow.find('td:first').html().trim();
if(versionLabel.length > 0) {
entries[versionLabel] = {};
//extract item version properties
propsRow.find('tr').each(function(i){
var pName = $(this).find('td:nth-child(1)').text().trim();
var pVal = $(this).find('td:nth-child(2)').text().trim();
entries[versionLabel][pName] = pVal;
});
}
}
});
return entries;
}
上面的代碼獲得誤差:
「否‘訪問控制允許來源’標頭出現在所請求的資源」
再次,我不確定如何配置代碼,以便它可以訪問主機的網絡列表。 如果有人有另一種方式將版本歷史記錄到應用程序,我將不勝感激。
我在應用程序清單中給出了完全控制權,所以這不是問題。客戶端對象模型不提供版本屬性(僅在服務器端對象模型中提供) – Jenkaa
對不起,我錯過了這一點。對,使用CSOM你可以得到文件版本(File.Versions),但不是普通列表項:(: 不知道該怎麼做。 – Nikolay