SharePoint JSOM递归分类

时间:2015-04-24 09:44:33

标签: javascript recursion sharepoint-2013

我有一个问题,就是使用JSOM / javascript从一个术语组中递归地获取一个术语树。

问题在于我确实将所有值递归,但订单完全错误。

 function recurseTerms(currentTerm, loops){
loops++;
var terms = currentTerm.get_terms(); 
context.load(terms); 
context.executeQueryAsync( 
    function () {
        var termsEnum = terms.getEnumerator();

        while (termsEnum.moveNext()) {
            var newCurrentTerm = termsEnum.get_current();
            termstext += newCurrentTerm.get_name() + "<br>";

            //Check if term has child terms.
            if (newCurrentTerm.get_termsCount() > 0) {
                recurseTerms(newCurrentTerm, loops);
            }
        }
        document.getElementById("resultsDiv").innerHTML = termstext;
 },
 function () {

//failure to load terms

});

因此我将函数recurseTerms作为第一个参数调用Term-object(root),将0作为循环调用(仅用于格式化)。我在管理工具中查看的术语是:

Level 1
--Level 1a
--Level 1b
Level 2
Level 3
--Level 3a
----Level 3a
------Level 3a1
------Level 3a2
--------Level 3a2a
--------Level 3a2b
----Level 3b

但不幸的是,我的函数(termstext)的输出是:

Level 1
Level 2
Level 3
Level 1a
Level 1b
Level 3a
Level 3b
Level 3a1
Level 3a2
Level 3a2a
Level 3a2b

所以我假设当函数达到Term&#39; level 1&#39;时,他会通过在子级1&#39;下面打印子项来检测孩子并递归。但事实并非如此。

我知道问题是什么,但我不知道解决方案:( 请问有人指出我的好方法吗? 非常感谢!

1 个答案:

答案 0 :(得分:0)

好的,我很久以前使用javascript promises修复了这个问题。当检索到级别1时,我们可以调用函数等...