我需要使用sharepoint客户端对象模型获取当前Web上列表的所有根文件夹。
我尝试使用此代码,但我有错误
var context = SP.ClientContext.get_current();
var lists = context.get_web().get_lists();
context.load(lists);
context.executeQueryAsync(function (sender, args) {
var enumerator = lists.getEnumerator();
while (enumerator.moveNext()) {
var list = enumerator.get_current();
var rootFolder = list.get_rootFolder();
context.load(rootFolder, 'ServerRelativeUrl');
context.executeQueryAsync(
function (sender, args) {
//error
var url = rootFolder.get_serverRelativeUrl();
console.log(url);
},
function (sender, args) {
console.log('error');
});
}
},
function (sender, args) {
console.log('error');
});
由于
答案 0 :(得分:3)
发生此错误是因为List.RootFolder property尚未初始化,因为未请求。
为了加载List.RootFolder
替换行:
context.load(lists);
这一个:
context.load(lists,'Include(RootFolder)');
但是指定的示例包含另一个缺陷:
ServerRelativeUrl
执行后续查询
属性下面演示了为所有列表打印根文件夹的固定版本:
var context = SP.ClientContext.get_current();
var lists = context.get_web().get_lists();
context.load(lists,'Include(RootFolder)');
context.executeQueryAsync(function () {
var enumerator = lists.getEnumerator();
while (enumerator.moveNext()) {
var list = enumerator.get_current();
var rootFolder = list.get_rootFolder();
var url = rootFolder.get_serverRelativeUrl();
console.log(url);
}
},
function (sender, args) {
console.log('error');
});