SharePoint JSOM получает рекурсивную таксономию

У меня проблема с рекурсивным получением дерева терминов из группы терминов с использованием 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

Поэтому я предполагаю, что, когда функция достигает Термина «уровень 1», он обнаружит дочерние элементы и выполнит рекурсию, распечатав дочерние термины ниже «Уровня 1», но, по всей видимости, это не так.

Я знаю, в чем проблема, но я не могу найти решение :( Может ли кто-нибудь указать мне хороший способ, пожалуйста? Очень признателен!


person Verthosa    schedule 24.04.2015    source источник


Ответы (1)


Хорошо, я исправил это давным-давно, используя обещания javascript. После получения уровня 1 мы можем вызвать функцию и т. Д.

person Verthosa    schedule 19.03.2016
comment
Пожалуйста, поделитесь решением, которое может помочь таким людям, как я, найти решение - person Bala; 23.06.2016
comment
Хорошо, прошло какое-то время, но я попробую еще раз поискать этот код ;-) - person Verthosa; 24.06.2016