获取SP.js的所有列表根文件夹

时间:2014-04-24 08:00:38

标签: sharepoint client-object-model sharepoint-clientobject

我需要使用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');
});

由于

1 个答案:

答案 0 :(得分:3)

发生此错误是因为List.RootFolder property尚未初始化,因为未请求。

为了加载List.RootFolder替换行:

context.load(lists);

这一个:

context.load(lists,'Include(RootFolder)');

但是指定的示例包含另一个缺陷:

下面演示了为所有列表打印根文件夹的固定版本:

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');
});