SharePoint JSOM 获取分类法递归
SharePoint JSOM get taxonomy recursive
我在使用 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
所以我假设当函数到达 'level 1' 项时,他会通过在 'Level 1' 下打印子项来检测子项并递归,但显然情况并非如此。
我知道问题出在哪里,但我不知道解决方案:(
谁能指出我的好方法吗?
非常感谢!
好的,我很久以前就使用 javascript promises 解决了这个问题。当检索到级别 1 时,我们可以调用函数等...
我在使用 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
所以我假设当函数到达 'level 1' 项时,他会通过在 'Level 1' 下打印子项来检测子项并递归,但显然情况并非如此。
我知道问题出在哪里,但我不知道解决方案:( 谁能指出我的好方法吗? 非常感谢!
好的,我很久以前就使用 javascript promises 解决了这个问题。当检索到级别 1 时,我们可以调用函数等...